Rails 5 Test Prescriptions 第10章 Unit_Testing JavaScript(新工具,learn曲线太陡峭,pass)

对Js的单元测试是一个大的题目。作者认为Ruby的相关测试工具比Js的测试工具更灵活

大多数Js代码最终是关于响应用户的行为和改变DOM中的元素

没有什么javascript的知识点。前两节用了几个新的测试工具,和大量配置,暂时pass.

  • setup js Unit-tests
  • writing a Sample test
  • Tdd in Js
  • jasmine matchers
  • testing ajax calls
  • using testdouble.js
  • connecting the js to the server code

Setting Up JavaScript Unit Tests

Webpack的配置很复杂,虽然rails团队已经做了改进,有时仍需要挖掘细节。

本章使用:

Karma test runner: 从命令行运行,执行测试,和微博趴窗口良好兼容

Jasmine: 一个测试的工具,作者喜欢它的syntax。

TestDouble package:

命令:加载相关的模块:

yarn add jasmine jasmine-core karma karma-chrome-launcher karma-jasmine karma-mocha-reporter karma-sourcemap-loader karma-webpack testdouble testdouble-jasmine --dev

解释:

使用Yarn package manager来管理独立的JS。使用Yarn来加载这些modules。

--dev命令增加这些模块到package.json中的独立的section 。(就是说这些模块只在development环境下使用,都是用于测试的) 标签是"devDependencies"

"devDependencies": {

"jasmine": "^3.1.0", 写代码的库

"jasmine-core": "^3.1.0", 写代码的库

"karma": "^2.0.2", command-line program

"karma-chrome-launcher": "^2.2.0", 让karma在Chrome中运行测试

"karma-jasmine": "^1.1.2", 接口

"karma-mocha-reporter": "^2.2.5",

"karma-sourcemap-loader": "^0.3.7",

"karma-webpack": "^3.0.0", 让karma使用webpack

"testdouble": "^3.8.1", mock object package

"testdouble-jasmine": "^0.2.1", 两者的集成。

"webpack-dev-server": "2.11.2"

}

再运行:

$ yarn global add karma-cli

所以模块已经加载了。

原文地址:https://www.cnblogs.com/chentianwei/p/9120776.html

时间: 2024-12-15 02:15:05

Rails 5 Test Prescriptions 第10章 Unit_Testing JavaScript(新工具,learn曲线太陡峭,pass)的相关文章

Rails 5 Test Prescriptions 第9章 Testing-JavaScript: Integration Testing

使用Capybara进行JS的集成测试 谈论驱动 让测试通过 Webpack in Development Mode Js设计 是用户在网页上有好的体验的重要因素. 尽管如此,许多网页不测试JS. 部分原因是js难以测试.交互和逻辑是依靠用户在网页上的交互动作,这就难了. Js框架也不支持简单的单元测试.同时工具变化也非常快.b本章使用的工具看起来有点老,如果你读的时候没有被彻底的antiquated废弃. 本章谈使用集成测试工具 Capybara来测试js,从客户端代码. 下章谈论单元测试JS

Rails 5 Test Prescriptions 第6章Adding Data to Tests

bcreate the data quickly and easily.考虑测试运行的速度. fixtures and factories.以及下章讨论的test doubles,还有原生的create创建的,没有一个方案可以解决所有情景. Fxitures 如果想使用固件.RSpec目录是spec/fixtures/projects.yml. Mini test的目录是test/fixtures/ runway: name: Project Runway due_date: 2016-12-1

[摘录]第10章 培养胜过对手的力量

第五部分 谈判高手 优势秘籍力量.控制和影响,是每个人与别人交往时都会追求这些东西.不是吗?在进行谈判时,那些最有影响力火灾是最有力量的一方往往会在谈判时迫使对手做出更多的让步.如果你甘心让对手来操纵或影响你的话,显然你就很可能得不到自己想要的结果.另一方面,如果你直到哪些因素,能影响你的对手,并知道如何使用一些具体的方法来形成这种影响力,你就可以将形势控制在自己手中.权力本身也可以成为一种非常富有建设性的力量,当我们谈论权力时,我并不是指独裁者们用来祸害平民们的那种权力,我所说的权力实际上是一

10-11-基数排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第10章  内部排序 - 基数排序 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c        相关测试数据下载  链接? 数据

读《构建之法》第8、9、10章有感

第8章  需求分析 软件需求 用户的需求五花八门,作为一个软件团队要准确而全面地获取这些需求主要有以下四个步骤: 获取和引导需求.这一步骤也被叫做“需求捕捉”.软件团队需要为用户着想,设身处地,为用户引导出需求. 分析和定义需求.从各个方面获取的需求进行规整,定义需求的内涵从各个角度将需求量化. 验证需求.软件团队要跟利益相关者沟通,通过分析报告.技术原型.用户调查或演示等形式向他们验证软件团队对于这些需求的认知. 在软件产品的生命周期中管理需求. 竞争性需求分析的框架:1.N(需求) 2.A(

敏捷软件开发:原则、模式与实践——第10章 LSP:Liskov替换原则

第10章 LSP:Liskov替换原则    Liskov替换原则:子类型(subtype)必须能够替换掉它们的基类型(base type). 10.1 违反LSP的情形 10.1.1 简单例子 对LSP的违反导致了OCP的违反: struct Point { double x, y;} public enum ShapeType { square, circle }; public class Shape { private ShapeType type; public Shape(Shape

第10章-异常处理 --- 使用throw抛出异常

第10章-异常处理 --- 使用throw抛出异常 (一)抛出异常 如果需要在程序中自行抛出异常,则应使用throw语句,throw语句可以单独使用,throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例. throw语句的语法格式如下: throw ExceptionInstance; 如果throw语句抛出的异常是Checked异常,则该throw语句要么处于try块里,显示捕获该异常,要么放在一个带throws声明抛出的方法中,即把该异常交给该方法的调用者处理;如果

第10章-异常处理 --- Checked异常和Runtime异常体系

第10章-异常处理 --- Checked异常和Runtime异常体系 Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常).所有的RuntimeException类及其子类的实例被称为Runtime异常;不是RuntimeException类及其子类的异常实例则被称为Checked异常. 对于Checked异常的处理方法有如下两种: (1)当前方法明确知道如何处理该异常,程序应该用try...catch块来捕获该异常,然后在对应的catch块中修复该异常. (2)当

内部排序-第10章-《数据结构题集》习题解析-严蔚敏吴伟民版

//**留坑待填**// 一.基础知识题 10.1?以关键码序列(503,087,512,061,908,170,897,275,653,426)为例,手工执行以下排序算法,写出每一趟排序结束时的关键码状态: (1)直接插入排序:                            (2)希尔排序(增量d[1]=5): (3)快速排序:                                  (4)堆排序: (5)归并排序: