【问题标题】:jasmine + coffeescript - jasmine skipping testsjasmine + coffeescript - jasmine 跳过测试
【发布时间】:2012-06-14 15:58:50
【问题描述】:

Jasmine 跳过了我所有的“it”测试,除了 describe 块中的最后一个测试 - 我在测试中使用了 coffeescript,我相信这可能是原因。当我查看由我的 .coffee 测试创建的已编译 JS 时,我发现只有最后一个“it”测试前面有“return”这个词,这可能就是跳过其余测试的原因。

我的问题是,我怎样才能让它“返回”所有测试?

最后一个测试编译后的样子:

return it("should filter a range of prices", function() {

它之前的样子(这些被规范运行者跳过):

it("should filter a specific price", function() {

【问题讨论】:

  • specrunner 告诉我通过了 1 个规范,而实际上有 2 个规范。我修复了它,但我不知道为什么它修复了它。阅读下文

标签: javascript coffeescript jasmine


【解决方案1】:

我尝试以不同的方式填充集合,现在它可以工作了。

跳过第一个测试时我的测试是什么样的(specrunner 说通过了 1 个规范,使用此代码跳过了 0 个):

describe "Products Collection", ->
    it "should filter a specific price", ->
        products = new Wishlist.Collections.Products
        products.add({name: 'product1', price: 15.99})
        products.add({name: 'product2', price: 21.99})
        products.add({name: 'product3', price: 21.99})
        products.add({name: 'product4', price: 1.99} )
        match = products.where({price: 21.99})
        expect(match.length).toBe(2)

    it "should filter a range of prices", ->
        products = new Wishlist.Collections.Products
        products.add({name: 'product1', price: 15.99})
        products.add({name: 'product2', price: 21.99})
        products.add({name: 'product3', price: 21.99})
        products.add({name: 'product4', price: 1.99})
        expect(products.priceFilter(16,25).size()).toBe(2)

它们现在的样子(正常工作):

describe "Products Collection", ->
    it "should filter a specific price", ->
        products = new Wishlist.Collections.Products [{name: 'product1', price: 15.99}, {name: 'product2', price: 21.99}, {name: 'product3', price: 21.99}, {name: 'product4', price: 1.99}]
        match = products.where({price: 21.99})
        expect(match.length).toBe(2)

    it "should filter a range of prices", ->
        products = new Wishlist.Collections.Products
        products.add({name: 'product1', price: 15.99})
        products.add({name: 'product2', price: 21.99})
        products.add({name: 'product3', price: 21.99})
        products.add({name: 'product4', price: 1.99})
        expect(products.priceFilter(16,25).size()).toBe(2)

如您所见,使用 products.add() 不会导致问题,因为它在第二次测试中有效。我不知道为什么这很重要..

【讨论】:

  • 我也没有看到任何相关的变化。返回值应该无关紧要(因为它是注册测试而不是返回值的it 的调用)。旁注:您可以去掉 products.add 调用中的圆括号,这将提高可读性 (IMO)。
猜你喜欢
  • 2012-11-15
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
相关资源
最近更新 更多