Ember.js 如何将qunit bdd与ember qunit一起使用?

Ember.js 如何将qunit bdd与ember qunit一起使用?,ember.js,qunit-bdd,ember-qunit,Ember.js,Qunit Bdd,Ember Qunit,最初由Andreas Haller发布在邮件列表上,在此处重新发布,以便“qunit bdd”标签可供其他人使用 为帮助程序添加一个方便的模块,可以将其用作QUnit的模块功能的替代品。现在,ember qunit抽象了一些东西,这样我就不必使用模块函数,也不知道是否可以。我的问题有两个: 描述的实际行为是否与模块相同 我如何使用ember qunit的模块进行/模块组件 如果#2还没有解决方案,那么像description(moduleFor('controller:posts')这样的函数(

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

为帮助程序添加一个方便的
模块,可以将其用作QUnit的
模块
功能的替代品。现在,ember qunit抽象了一些东西,这样我就不必使用模块函数,也不知道是否可以。我的问题有两个:

  • 描述的
    实际行为是否与
    模块
    相同
  • 我如何使用ember qunit的
    模块进行
    /
    模块组件
    如果#2还没有解决方案,那么像
    description(moduleFor('controller:posts')这样的函数(){…}
    就很好了


    qunit中的
    描述
    ,bdd的作用基本上与qunit中的
    模块
    相同。不同之处在于,它们可以嵌套在qunit bdd中,并且每一层嵌套都将对应于一个名称连接在一起的
    模块
    调用。例如,这将导致对
    模块的三次调用:

    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');
        });
      });
    });
    
    因为无法控制调用了什么
    模块
    函数,所以(目前)无法将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();
      });
    }));
    

    任何建议都将不胜感激。

    请注意,Qunit现在支持现成的嵌套模块。此处正在跟踪ember qunit对此的支持: