我的应用程序中有一个简单的route:
Dash.PostsNewRoute = Em.Route.extend({
model: function() {
return this.store.createRecord('post');
},
actions: {
saveForm: function() {
this.modelFor('postsNew').save();
}
}
});下面是我为测试saveForm并确保调用它而编写的测试:
...
context('create new post', function() {
beforeEach(function() {
...
});
it('calls submit on route', function() {
var mock;
mock = sinon.mock(testHelper.lookup('route', 'posts.new'));
mock.expects('actions.saveForm').once();
this.submitButton.click();
mock.verify();
mock.restore();
});
});但是,我发现这个实现有一个错误:Attempted to wrap undefined property actions.saveForm as function
如果我改变路线,像这样进行测试,它会起作用的:
// Moving the save out of action and call it
Dash.PostsNewRoute = Em.Route.extend({
model: function() {
this.store.createRecord('post');
},
save: function() {
this.modelFor('postsNew').save()
},
actions: {
saveForm: function() {
this.save();
}
}
});新的测试:
it('calls submit on route', function() {
var mock;
mock = sinon.mock(testHelper.lookup('route', 'posts.new'));
mock.expects('save').once();
this.submitButton.click();
mock.verify();
mock.restore();
});这样考试就能通过了。可以直接测试actions.saveForm吗?sinon的限制是否妨碍了我访问actions.saveForm?
发布于 2014-02-04 20:14:22
您可以模拟操作、散列并设置期望,如下所示:
mock = sinon.mock(testHelper.lookup('controller', 'posts_new')._actions);
mock.expects('save').once();
this.submitButton.click();
mock.verify();
mock.restore();https://stackoverflow.com/questions/21043038
复制相似问题