首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同步执行DOH测试?

如何同步执行DOH测试?
EN

Stack Overflow用户
提问于 2011-11-29 20:36:29
回答 1查看 268关注 0票数 0

有人能帮我找到解决这个问题的办法吗?我有(假设)3个doh函数,第一个是异步的,其余的是同步的。我必须首先调用异步函数,并将此函数的结果传递给其他两个函数,可以吗?

示例:

代码语言:javascript
复制
doh.register(".....", [
{
 name : "asyncFunction",
 runTest : function(){
  function callback(result){
    //How to pass the result to fun_2 and fun_3 
    //also fun_2 or fun_3 should be deferred until this function executes
  }
 }
},
function fun_2(result){
 //doh.assertTrue(.....);
},
function fun_3(result){
//doh.assertTrue(.....);
}

任何帮助都是最好的。

EN

回答 1

Stack Overflow用户

发布于 2012-03-08 04:56:14

因此,听起来您的第一个函数基本上是用于其他测试的设置函数。

这是可能的-基本上使用Deferreds/promises,但它有点麻烦,而且您可能会受到测试超时的严重刺激。

所以,这是一些需要2秒的异步代码的设置。所有的测试都变成了异步测试,一旦“设置”延迟完成,就会执行它们的工作。

因为您的“后续”测试已经成为异步测试,所以您需要确保它们的超时与您的异步设置所需的时间相匹配(至少对于碰巧运行的第一个测试是如此)。

代码语言:javascript
复制
            // Some asynchronous initialization that takes 2s
            setTimeout(function() {
                setupCompletion.resolve({ result: 42 });
            }, 2000);

            doh.register("my.test1", [
                {
                    name: "waits for async setup to complete",
                    timeout: 5000,
                    runTest: function() {
                        var d = new doh.Deferred();
                        setupCompletion.then(function (res) {
                            doh.is(42, res.result);
                            d.callback(true);
                        });
                        return d;
                    }
                },
                {
                    name: "also waits for async setup to complete",
                    timeout: 5000,
                    runTest: function() {
                        var d = new doh.Deferred();
                        setupCompletion.then(function (res) {
                            doh.is(43, res.result + 1);
                            d.callback(true);
                        });
                        return d;
                    }
                }
            ]);

当然,如果可以安排测试的setUp函数返回一个Deferred,那就太好了,但是doh目前还不支持这一点(从v1.7.2开始)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8310789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档