【发布时间】:2012-12-13 04:38:11
【问题描述】:
我是 qunit 和 JS 测试的新手。被测代码执行一个必须在我断言之前完成的动画 (slideDown)。看起来很简单,但我似乎无法让它工作。
asyncTest('my test', function() {
setTimeout(function() {
// assert something here
start();
}, 1000);
});
永远不会调用回调,测试挂起。
我也尝试过其他各种方法。例如:
test('my test', function() {
expect(1);
stop(1000);
// assert something here
start();
});
我可以看到start 和stop 都被调用了,test 调用完成了,但它仍然挂起。
如果重要的话,这是我的设置:
setup: function() {
this.server = sinon.fakeServer.create();
this.server.respondWith([200, { 'Content-Type': 'text/html' }, new_items()]);
// invoke the actual system under test
this.server.respond();
}
【问题讨论】:
-
如果您只使用像
ok(true, "always fine");这样的简单断言,第一个示例是否有效? IE。asyncTest()通常对您有用吗?因为如果是这样,那一定是你的断言代码破坏了你的测试。 -
我可能不太清楚,传入 setTimeout 的回调永远不会运行。
-
它从来没有被调用过?不管断言中的代码多么简单? my jsFiddle examples 呢?
-
我很确定回调中的任何内容都不会影响它是否被调用。怎么可能?
-
没错,除非有语法错误或类似的东西。我的观点是:你的代码看起来不错,我看不出有明显的错误。
setTimeout()是否对你有用?
标签: javascript testing qunit