gpt4 book ai didi

javascript - 异步测试在实习生中如何工作?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:50:01 24 4
gpt4 key购买 nike

异步测试如何在 Intern 测试框架中工作?我试图让它们完全按照示例中的方式运行,但异步测试立即通过,而无需等待运行回调。

it('should connect in 5 seconds', function () {
var dfd = this.async(5000);
conn.connect(credentials, dfd.callback(function(result) {
expect(result).to.... something
}));
}

测试立即通过。我做错了什么?

最佳答案

dfd.callback 在它自己被执行之前不会执行任何东西。请记住,它是为 promise 回调(即传递给 promise.then 的函数)而设计的,而不是参数可能是错误的 Node.js 风格的回调(即 function (error , 结果){})。它不会检查是否有错误作为参数传递。

不知道 conn 是什么,但看到您如何将 dfd.callback 作为参数传递给不是 promise 的东西,我怀疑您正在尝试使用 Node.js 风格的回调,调用立即出错。我们可能会在未来为这些类型的回调提供一个方便的包装器,将它们转换为一个 promise 接口(interface),但在那之前,您可能只需要做这样的事情:

it('should connect in 5 seconds', function () {
var dfd = this.async(5000);
conn.connect(credentials, dfd.callback(function(error, result) {
if (error) {
throw error;
}

expect(result).to.... something
}));
});

否则,如果不知道 conn 是什么,也不知道您的实际断言是什么,就很难说出这里的问题所在。只要回调中没有任何内容抛出错误,测试就会被视为成功。

编辑:根据您上面的评论,您的回调听起来像是一个使用不同信息多次调用的事件监听器。在这种情况下,您可以这样做:

it('should connect in 5 seconds', function () {
var dfd = this.async(5000);
conn.connect(credentials, dfd.rejectOnError(function (result) {
if (result !== 'what I want') {
return;
}

expect(result).to.... something
// all other tests…

// nothing threw an error, so it is a successful test
dfd.resolve();
}));
});

dfd.rejectOnError 的工作方式与 dfd.callback 类似,只是它不会自动解决 promise ;你最后自己做。

关于javascript - 异步测试在实习生中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349850/

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