摩卡咖啡-检索承诺测试的结果

死灵

我想得到诺言的结果 before

describe('unsubscribe', function() {
        var arn;
        this.timeout(10000);
        before(function(done) {
            sns.subscribe('param1', 'param2').then(
                (result) => {
                arn = result;
                done();
            },
            (error) => {
                assert.fail(error);
                done();
            });
        });
        it('("param") => promise returns object', function() {
            const result = sns.unsubscribe(arn);
            expect(result).to.eventually.be.an('object');
        });
    });

同样,after我想在测试中得到承诺的结果

describe('subscribe', function() {
        var arn;
        this.timeout(10000);
        it('("param1","param2") => promise returns string', function(done) {
            sns.subscribe('param1', 'param2').then(
                (result) => {
                    arn = result;
                    expect(result).to.be.a('string');
                },
                (error) => {
                    assert.fail(error);
                    done();
                });
        });
        after(function(done) {
            sns.unsubscribe(arn).then(
                (result) => done());
        });
    });

这段代码编写正确吗?有没有更好的做法?推荐的做法是什么?

路易

您想让摩卡咖啡在每个地方等待诺言解决的地方,您应该只兑现诺言而不是使用done因此,您的before钩子可以简化为:

    before(() => sns.subscribe('param1', 'param2')
        .then((result) => arn = result));

这比在done这里和那里并且为错误情况做任何特殊的事情更具可读性如果有错误,则诺言将被拒绝,摩卡(Mocha)将捕获并报告错误。无需执行自己的断言。

您有一个测试和一个after钩子,也可以通过仅返回它们使用的promise而不是using来简化done如果您的测试取决于承诺,请记住将其退还您在其中一项测试中忘记了它:

it('("param") => promise returns object', function() {
  const result = sns.unsubscribe(arn);
  // You need the return on this next line:
  return expect(result).to.eventually.be.an('object');
});

提示:如果您有一个测试套件,其中所有测试都是异步的,则可以使用该--async-only选项。这将使Mocha需要进行所有测试才能调用done或返回承诺,并且可以帮助发现您忘记了返回承诺的情况。(否则,如果不引发任何错误,这种情况就很难处理。)

在回调中定义一个变量describe并将其设置在一个before/beforeEach钩子中并钩子中检查它after/afterEach是在钩子和测试之间传递数据的标准方法。Mocha没有为此提供特殊的设施。因此,是的,如果您需要传递数据(这是诺言的结果),则需要.then执行操作一样执行分配您可能会遇到一些示例,在这些示例中,人们将使用而不是使用describe回调中定义的变量来将字段设置为this哦,这可行,但IMO却很脆弱。一个简单的例子:如果您设置this.timeout记录一些仅对您的测试有意义的数字,那么您已经覆盖了Mocha提供的用于更改其超时的功能。您可以使用其他名称,该名称现在不会冲突,但是会在发布新版本的Mocha时发生冲突。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

摩卡咖啡-如何测试未兑现的承诺?

摩卡咖啡测试即将推出

摩卡咖啡有测试现场模式吗?

将测试参数传递给摩卡咖啡

测试完成后,摩卡咖啡挂起

如何在摩卡咖啡中测试课程?

摩卡咖啡等待测试setTimeout函数

反应组件测试。摩卡咖啡,酶测试。失误

摩卡咖啡仅运行一项测试

如何开始使用摩卡咖啡并进行首次测试?

进行很长时间的摩卡咖啡测试是不好的做法吗?

如何在摩卡咖啡中进行硒测试?

让摩卡咖啡等待下一次测试

打字稿,快递,摩卡咖啡和柴在测试时出错

摩卡咖啡中跳过的测试显示在报告中

摩卡咖啡-设置测试跳过消息(原因)

摩卡咖啡似乎并没有在运行测试之前等待承诺链完成

酶和摩卡咖啡让我在伊斯坦布尔覆盖率测试中出错,为什么?

如何解决“错误:预期在'ProxyZone'中运行,但未找到。” 在摩卡咖啡测试中?

测试应该在摩卡咖啡中失败的东西。(没有抓住就断言)

我如何正确地用摩卡咖啡和柴测试诺言?

我们可以在摩卡咖啡中分类测试错误吗?

摩卡咖啡:不能使用一个请求来进行多个“ it”测试

测试未执行-带有标准摩卡咖啡和phantomjs的守夜人

如何告诉摩卡咖啡在哪里可以递归找到我的测试?

保证摩卡咖啡延迟

ESLint与摩卡咖啡

摩卡咖啡不退出

全局更改默认超时或仅针对一个测试更改默认超时的最佳做法是什么?摩卡咖啡