sinon 및 konacha를 사용하여 ember.js에서 작업 테스트
-
21-12-2019 - |
문제
나는 간단한 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
곧장?actions.saveForm에 액세스하지 못하게 하는 sinon의 제한이 있습니까?
해결책
다음과 같이 작업 해시를 조롱하고 이에 대한 기대치를 설정할 수 있습니다.
mock = sinon.mock(testHelper.lookup('controller', 'posts_new')._actions);
mock.expects('save').once();
this.submitButton.click();
mock.verify();
mock.restore();
제휴하지 않습니다 StackOverflow