我想测试这样的控制器操作:
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();
}
};
}
});
这将使您的控制器能够像商店真的在那里一样工作,同时,如果控制器对商店做了任何您没有提前计划的事情,则会提醒您。
另一种选择是实际设置您的商店进行测试,但这稍微涉及更多。如果你想这样做,那么写一个集成测试而不是单元测试可能会更容易。