Actions de test dans ember.js avec sinon et konacha
-
21-12-2019 - |
Question
J'ai une simple route
dans mon application comme ceci:
Dash.PostsNewRoute = Em.Route.extend({
model: function() {
return this.store.createRecord('post');
},
actions: {
saveForm: function() {
this.modelFor('postsNew').save();
}
}
});
Voici le test que j'ai écrite pour tester saveForm
et de s'assurer qu'il est appelé:
...
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();
});
});
Cependant, j'obtiens une erreur avec cette mise en œuvre:Attempted to wrap undefined property actions.saveForm as function
Si je change de route et c'est test comme ça, ça marchera:
// 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();
}
}
});
Le nouveau test:
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();
});
De cette façon, le test passe.Est-il possible de tester actions.saveForm
directement?La limitation de sinon qui m'empêche d'accéder à des actions.saveForm?
La solution
Vous pourriez moquer des actions de hachage et de définir attente pour elle de la sorte:
mock = sinon.mock(testHelper.lookup('controller', 'posts_new')._actions);
mock.expects('save').once();
this.submitButton.click();
mock.verify();
mock.restore();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow