CoffeeScript 使用 Jasmine 测试


当前第2页 返回上一页

使用SpecRunner.html ,只是简单地参考你编译后的JavaScript文件,并且在jasmine.js以及其依赖项后编译的测试文件。

在上述示例中,我们在第14行包含了尚待开发的calculator.js文件,在第17行编译了calculatorSpec.js文件。

运行测试

要运行我们的测试,只需要简单地在web浏览器中打开SpecRunner.html页面。在我们的示例中可以看到4个失败的specs共8个失败情况(如下)。

看来我们的测试是失败的,因为jasmine无法找到Calculator变量。那是因为它还没有被创建。现在让我们来创建一个新文件命名为js/calculator.coffee。

# calculator.coffee

window.Calculator = class Calculator

编译calculator.coffee并刷新浏览器来重新运行测试组。

现在我们还有4个失败而不是原来的8个了,只用一行代码便做出了50%的改进。

测试通过

实现我们的方法来看是否可以通过测试。

# calculator.coffee

window.Calculator = class Calculator
    add: (a, b) ->
        a + b

    subtract: (a, b) ->
        a - b

当我们刷新页面时可以看到全部通过。

重构测试

既然测试全部通过了,我们应看一看我们的代码或测试是否可以被重构。

在我们的spec文件中,每个测试都创建了自己的calculator实例。这会使我们的测试相当的重复,特别是对于大型的测试套件。理想情况下,我们应该考虑将初始化代码移动到每次测试之前运行。

幸运的是Jasmine拥有一个beforeEach函数,就是为了这一目的设置的。

describe 'Calculator', ->
    calculator = null

    beforeEach ->
        calculator = new Calculator()

    it 'can add two positive numbers', ->
        result = calculator.add 2, 3
        expect(result).toBe 5

    it 'can handle negative number addition', ->
        result = calculator.add -10, 5
        expect(result).toBe -5

    it 'can subtract two positive numbers', ->
        result = calculator.subtract 10, 6
        expect(result).toBe 4

    it 'can handle negative number subtraction', ->
        result = calculator.subtract 4, -6
        expect(result).toBe 10

当我们重新编译我们的spec然后刷新浏览器,可以看到测试仍然全部通过。


标签:CoffeeScript

返回前面的内容

相关阅读 >>

CoffeeScript 计算两个日期中间的天数

CoffeeScript 生成器模式

CoffeeScript 匹配字符串

CoffeeScript 计算月球的相位

CoffeeScript 双向客户端

CoffeeScript 生成可预测的随机数

CoffeeScript 单件模式

CoffeeScript 检测与构建丢失的函数

CoffeeScript 基本的 http 服务器

CoffeeScript 检查变量的类型是否为数组

更多相关阅读请进入《CoffeeScript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...