摩卡咖啡在第一次等待呼叫后退出

时间:2019-06-20 12:14:22

标签: node.js mocha

我正在为我的AWS Lambda函数编写测试。 lambda函数被编写为async-await函数。

我为我的功能编写了以下摩卡测试用例。

const mainFile = require("../../src/main.js");
describe("creation", function () {
  this.enableTimeouts(false)
  let request = {};
  let insertSpy = sinon.spy();
  let mockStatsParms = mockStatsParams();
  beforeEach(() => {
    AWS.mock('DynamoDB.DocumentClient', 'put', insertSpy);
    sinon.stub(services,"createparams").callsFake(mockStatsParams);
  })

  it("should return error for missing id", async function() {
    request.headers = {};
    let response = await mainFile.createEntry(request);
    expect(insertSpy.calledOnce).to.be.true;
    expect(insertSpy.calledWith(mockStatsParms)).to.be.true;
    expect(response.statusCode).to.equal(401);
  });

})

describe("makeResponse", function() {
  let mockResponseObj  = {};
  beforeEach(function() {
    mockResponseObj  = createMockResponseObj();
  })

  it("Should return a valid response", function() {
    expect(mainFile.makeResponse).to.be.a('function');
    let response = mainFile.makeResponse("a","b","c")
    expect(response.statusCode).to.equal(mockResponseObj.statusCode)
  });
});

第一个describe方法包含对异步功能的测试,而第二个方法则针对正常功能的测试。

问题是摩卡咖啡在完成下面一行的执行后退出测试用例

let response = await mainFile.createEntry(request);

它不执行第二组测试用例。但是,如果我删除了await调用,那么mocha将返回一个promise并将执行第二个测试套件。

我可以解决返回的承诺并测试响应(不使用等待)。但是使用await有什么问题吗?我希望摩卡咖啡在那条线上等待,得到结果,然后继续执行,执行剩余的测试用例。

0 个答案:

没有答案