2014-04-16 66 views
3

最初由Andreas Haller在郵件列表上發佈,在此處重新發布,以便其他人可以使用「qunit-bdd」標籤。如何將qunit-bdd與ember-qunit一起使用?

ember-qunit增加了一個方便的moduleFor幫手哪一個可以作爲替代QUnit的module功能使用。現在,ember-qunit將事物抽象化,這樣我就不必使用模塊函數,我不知道我是否可以。我的問題是雙重的:

  1. describe事實上的行爲與module一樣嗎?
  2. 我該如何使用ember-qunit的moduleFor/moduleForComponent

如果沒有#2的解決方案,但像describe(moduleFor('controller:posts'), function() { … })會是很好的。

+0

請注意,Qunit現在支持開箱即用的嵌套模塊。在這裏,我們正在跟蹤這個在ember-qunit中的支持:https://github.com/rwjblue/ember-qunit/issues/208 –

回答

2

describe qunit-bdd在QUnit中的作用大部分與module的作用相同。不同之處在於它們可以嵌套在qunit-bdd中,並且每個嵌套級別都將與名稱連接在一起的module調用對應。例如,這將導致三個電話到module

describe('Foo', function() { 
    it('is a function', function() { 
    expect(typeof Foo).to.equal('function'); 
    }); 

    describe('#foo', function() { 
    it('says FOO', function() { 
     expect(new Foo().foo()).to.equal('FOO'); 
    }); 
    }); 

    describe('#bar', function() { 
    it('says BAR', function() { 
     expect(new Foo().bar()).to.equal('BAR'); 
    }); 
    }); 
}); 

因爲沒有辦法控制什麼module函數被調用,也沒有辦法(還)使用qunit-BDD與Ember-qunit。我們正在討論如何改變這一點。你的建議可能會奏效,但是需要明確修改qunit-bdd作爲ember-qunit。我寧願在ember-qunit中擁有共享代碼,然後爲qunit-bdd提供一個簡單的包裝器。也許類似於你的,但保持API qunit-BDD相同:

describe('PostsController', testFor('controller:posts', function() { 
    it('has a length', function() { 
    expect(this.subject.length).to.be.defined(); 
    }); 
})); 

任何建議,將不勝感激。

相關問題