3

最初由 Andreas Haller 在邮件列表中发布,在此处重新发布,以便其他人可以使用“qunit-bdd”标签。

ember-qunit添加了一个方便的moduleFor助手,可以用来替代 QUnit 的module功能。现在 ember-qunit 抽象了一些东西,这样我就不必使用模块功能,而且我不知道我是否可以。我的问题是双重的:

  1. defacto 的行为是否describe与 相同module
  2. 我如何使用 ember-qunit 的moduleFor/ moduleForComponent

如果#2没有解决方案,但类似的东西describe(moduleFor('controller:posts'), function() { … })会很好。

4

1 回答 1

2

describe在 qunit-bdd 中的行为大部分与module在 QUnit 中相同。不同之处在于它们可以嵌套在 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 一起使用。我们正在讨论如何改变这一点。您的建议可行,但需要为 ember-qunit 显式修改 qunit-bdd。我更喜欢在 ember-qunit 中拥有共享代码,然后为 qunit-bdd 提供一个瘦包装器。也许与您的类似,但保持 qunit-bdd 的 API 相同:

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

任何建议,将不胜感激。

于 2014-04-16T15:43:23.993 回答