gpt4 book ai didi

unit-testing - Emberjs 测试组件的 Action 委托(delegate)

转载 作者:行者123 更新时间:2023-11-28 21:11:53 26 4
gpt4 key购买 nike

我正在尝试测试一个使用 Action 委托(delegate)的简单组件。我想测试某个 Action 是否发送到组件的 actionDelegate。我正在考虑使用 Sinon 来检查是否正在发送操作,但我不知道如何复制 Ember 用来将其操作发送到其委托(delegate)/目标的结构。

当用户点击按钮时,我的 sinon“spy delegate”对象会采用什么结构来检查组件是否正在使用“send”委托(delegate)事件?

我已经在 http://jsfiddle.net/L3M4T/ 创建了一个我想测试的例子但它周围没有测试工具(只是为了一个简单的 js fiddle ,在组件周围放置一个测试工具是一项艰巨的工作——事实上,将这个组件变成我的形状是一项相当大的工作想解释这个问题)。

这是我的组件:

App.AppProfileComponent = Ember.Component.extend({
actionDelegate: null,
actions: {
hello: function(person) {
if(!Ember.isEmpty(this.get('actionDelegate'))) {
this.get('actionDelegate').send('hello', person);
}
}
}
});

我最初的尝试没有成功,只是简单地编写了一个包含这个片段的测试(使用 sinon 和 qunit):

visit("/").click("button").then(function() {
equal(actionDelegateSpy.called, true, "Action delegate should be called when button pressed");
});

我认为很明显为什么那个不起作用,但是由于我尝试了以下方法,它也不起作用:

var actionDelegateSpy = sinon.spy();
var actionDelegate = Ember.ObjectController.extend({
actions: {
"hello" : actionDelegateSpy
}
}).create();

然后通过将上面定义的actionDelegate作为组件上的actionDelegate传入进行测试。

最佳答案

我解决了我自己的问题......愚蠢的我:

  test("delegates its hello action to actionDelegate", function() {
var actionDelegateSpy;

Ember.run(function() {
actionDelegateSpy = sinon.spy();
var actionDelegate = Ember.ObjectController.extend({
actions: {
"hello" : actionDelegateSpy
}
}).create();
controller.set('actionDelegate', actionDelegate);
});

visit("/").click("button")
.then(function() {
equal(actionDelegateSpy.called, true, "Action delegate should be called when hello button pressed");
});
});

关于unit-testing - Emberjs 测试组件的 Action 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22677403/

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