最初由Andreas Haller发布在邮件列表中,在此处重新发布,以便“qunit-bdd”标签可供其他人使用。
ember-qunit添加了一个方便的
moduleFor
帮助程序,可以将其用作QUnit的module
函数的替代方法。现在ember-qunit抽象的东西,所以我永远不必使用模块功能,我不知道我是否可以。我的问题有两个:
describe
defacto的行为是否与module
相同?- 我如何使用ember-qunit的
醇>moduleFor
/moduleForComponent
?如果没有针对#2的解决方案,那么
describe(moduleFor('controller:posts'), function() { … })
之类的东西会很好。
答案 0 :(得分:2)
describe
与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
函数,所以还没有办法使用带有ember-qunit的qunit-bdd。我们正在讨论如何改变这种状况。您的建议可行,但需要为ember-qunit明确修改qunit-bdd。我更喜欢在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();
});
}));
任何建议都将不胜感激。