2012-06-11 2 views
2

Жасмин пропускает все мои тесты 'it', за исключением последнего в описываемом блоке - я использую coffeescript в своих тестах, и я считаю, что это может быть причиной. Когда я смотрю на скомпилированный JS, созданный моими .coffee-тестами, я вижу, что только последний тест «it» имеет перед ним слово «return», что, вероятно, является причиной того, что остальные тесты пропускаются.jasmine + coffeescript - тесты просачивания жасмина

Мой вопрос: как я могу заставить его «вернуть» все тесты?

, что последний тест выглядит при компиляции:

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

, что те, прежде чем смотреть, как (они быть пропущено specrunner):

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

specrunner говорит мне, что 1 спецификация прошла, когда на самом деле есть 2 спецификации. Я исправил это, но я не знаю, почему он это исправил. читайте ниже –

ответ

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() не могло быть причиной проблемы, так как оно работает во втором тесте. Я не знаю, почему это важно.

+1

Я тоже не вижу соответствующих изменений. Возвращаемое значение не должно иметь значения (поскольку это вызов 'it', который регистрирует тест, а не возвращаемое значение). Sidenote: вы можете избавиться от круглых дисков в ваших вызовах 'products.add', что улучшит читаемость (IMO). –

Смежные вопросы