gpt4 book ai didi

javascript - YUI.Test断言在事件回调中不会失败

转载 作者:行者123 更新时间:2023-11-29 15:41:41 27 4
gpt4 key购买 nike

我使用的是 3.4.0 版本

我对 YUI.Test 断言有一个奇怪的问题。这是示例:

YUI().use('test', 'node', 'node-event-simulate',
function(Y) {
var runner = Y.Test.Runner;

var someTestCase = new Y.Test.Case({
name : 'SomeMeaningfulName',

setUp : function() {
var test = this;

// create show details link
test.Y$aLink = Y.Node
.create('<a href="//some.fake.url.ie">Show details</a>');

Y.one('body')
.append(test.Y$aLink);
},

tearDown : function() {
this.Y$aLink.remove();
},

testEventListener : function() {
var test = this;

test.Y$aLink
.on('click', function(e) {
e.preventDefault();

// this codes works
console.log('on click event');

// this one doesn't fail
// it "works" perfectly when it's outside of the callback
Y.assert(false, 'false is true');
});

test.Y$aLink.simulate('click');
}
});

runner.add(someTestCase);
runner.run();
});

断言在事件的回调中永远不会失败:(文档没有提到这种情况...

也许我做错了什么,但由于缺乏文档,所以很难确定......

更新

没有等待/恢复的例子: http://jsfiddle.net/op1ekun/Fgra6/2/

还有等待/恢复的那个 http://jsfiddle.net/op1ekun/Fgra6/5/

更新 2

已经有类似的案例报道了,涉及到异步测试的问题,但这不是我的问题: http://yuilibrary.com/projects/yuitest/ticket/74

更新 3

这似乎正是我正在经历的并且看起来是 Billy 已经提出的解决方案,有趣的是使用依赖注入(inject),它可能值得一试: http://csausdev.wordpress.com/2011/02/12/unit-testing-callbacks-with-yui-test/

求助!谢谢!

最佳答案

在这种情况下,您可以利用 YUI 测试的等待和恢复机制。您告诉它等到 resume 方法被调用,并且 resume 方法接受一个回调,您可以在其中安全地进行断言。在您的情况下,它看起来像这样:

'test event listener': function () {
var test = this;

test.Y$aLink.on('click', function (e) {
e.preventDefault();

test.resume(function () {
Assert.fail('ouch!');
});
});

test.wait();
test.Y$aLink.simulate('click');
}

关于javascript - YUI.Test断言在事件回调中不会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18142860/

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