EmberJS:如何使用ember qunit的moduleFor测试控制器操作,它使用ember数据的存储



我想测试这样的控制器操作:

createNewBase: function () {
  var attributesForNewBase = this.get( 'model' ).getProperties( ... ),
      self = this,
      newBase = this.store.createRecord( ..., {
        ...
      } );
  newBase.save().then( function ( createdBase ) {
    self.send( 'setBaseOfModel', createdBase );
  }, function ( error ) {
    console.log( error );
  } );
}

问题是,如果我使用member qunit的moduleFor来测试这个操作,那么存储是未定义的。那么我该怎么做,或者创建这样的测试的正确方法是什么?

您可以创建一个模拟存储。类似这样的东西:

controller.set('store', {
    createRecord: function() {
        return {
            save: function() {
                return Ember.RSVP.resolve();
            }
        };
    }
});

这将使您的控制器能够像商店真的在那里一样工作,同时,如果控制器对商店做了任何您没有提前计划的事情,则会提醒您。

另一种选择是实际设置您的商店进行测试,但这稍微涉及更多。如果你想这样做,那么写一个集成测试而不是单元测试可能会更容易。

相关内容

  • 没有找到相关文章

最新更新