gpt4 book ai didi

javascript - 使用 sinon 和 konacha 在 ember.js 中测试 Action

转载 作者:行者123 更新时间:2023-11-29 10:45:04 24 4
gpt4 key购买 nike

我的应用程序中有一个简单的路由,如下所示:

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();
});
});

但是,我在执行此操作时遇到错误:尝试将未定义的属性 actions.saveForm 包装为函数

如果我改变路线并且它像这样测试,它会工作:

// 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?

最佳答案

您可以像这样模拟操作散列并为其设置期望值:

mock = sinon.mock(testHelper.lookup('controller', 'posts_new')._actions);
mock.expects('save').once();

this.submitButton.click();

mock.verify();
mock.restore();

关于javascript - 使用 sinon 和 konacha 在 ember.js 中测试 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com