我想测试这样的控制器动作:
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 );
} );
}
问题是如果我使用ember-qunit的moduleFor来测试这个动作,那么商店是未定义的。那么我该怎么做或者创建这样的测试的正确方法是什么?
答案 0 :(得分:3)
您可以创建模拟商店。像这样:
controller.set('store', {
createRecord: function() {
return {
save: function() {
return Ember.RSVP.resolve();
}
};
}
});
这将使您的控制器能够像商店真的一样运行,同时,提醒您控制器是否对您未提前计划的商店做任何事情。
另一种方法是实际设置您的商店进行测试,但这种情况稍微复杂一些。如果你想这样做,那么编写集成测试而不是单元测试可能会更容易。