如何构造异步功能的测试?

ekk*_*kis 5 javascript assert mocha.js async-await

我习惯于使用如下所示的标准NodeJs 断言库编写Mocha测试:

describe('Some module', () => {
   var result = someCall();
   it('Should <something>', () => {
      assert.ok(...);
   });
})
Run Code Online (Sandbox Code Playgroud)

但是现在我的电话返回了一个诺言...所以我想写:

describe('Some module', async () => {
   var result = await someCall();
   it('Should <something>', () => {
      assert.ok(...);
   });
})
Run Code Online (Sandbox Code Playgroud)

但这不起作用。我的测试根本没有运行。奇怪的是

describe('Some module', async () => {
   it('Should <something>', () => {
      var result = await someCall();
      assert.ok(...);
   });
})
Run Code Online (Sandbox Code Playgroud)

工作正常,但问题是我想进行单个调用并对它进行许多测试,因此我想在it()调用之外进行调用

我该如何运作?

并且请不建议柴。我想使用标准的断言库

Bri*_*ams 5

before接受一个async函数,因此您可以result在测试运行之前获取并将其在测试中使用,如下所示:

const assert = require('assert');

const someCall = () => Promise.resolve('hi');

describe('Some module', () => {
  let result;

  before(async () => {
    result = await someCall();
  });

  it('Should <something>', () => {
    assert.equal(result, 'hi');  // Success!
  });
});
Run Code Online (Sandbox Code Playgroud)