在ember单元测试之前运行初始化程序

时间:2016-09-02 21:46:38

标签: unit-testing ember.js ember-data

我想为路线的方法编写一个单元测试。

路由/车票

addTicketUserAssoc(ticket, ticketUserAssoc) {
  let copy = ticketUserAssoc.copy();
  copy.set('ticket', ticket);
  ticketUserAssoc.reset();
},

它在余烬数据记录中使用copyreset。它们是在初始化期间添加的方法。

初始化/模型

export default {
  name: 'model',
  initialize: function() {
    if (alreadyRun) {
        return;
    } else {
        alreadyRun = true;
    }

    DS.Model.reopen(isValidated, {
      copy: function(options){
        // some code ...
      },
      reset() {
        // some code ...  
      }
    });
  }
};

如果我尝试将初始化程序导入单元测试,它甚至不会出现在qunit的模块列表中。

解决方案 我最终这样做了:

moduleFor('route:tickets', 'Unit | Route | tickets', {
  // Specify the other units that are required for this test.
  needs: [
    // ...
  ],
  beforeEach() {
    Ember.run(function() {
      application = Ember.Application.create();
      application.deferReadiness();
    });
  }
});

test('assign ticket', function(assert){
  let route = this.subject();
  let store = route.get('store');
  ModelInitializer.initialize(application);
  // ...
})

0 个答案:

没有答案