【问题标题】:mocha test when callback is run运行回调时的摩卡测试
【发布时间】:2015-06-18 22:18:22
【问题描述】:

我正在测试一个 API,它在函数末尾的回调中已经有一个回调。我想将其包装在测试中以验证​​对象是否正确,但这似乎不起作用。 callbackEnd() 被调用,仅此而已。

在库上一个脚本加载成功:

function callback() {
  // populate gpt object
  if(typeof callbackEnd === 'function') {
    callbackEnd();
  }
}

Mocha.js 测试:

"use strict";
(function() {

  describe("Callback Success", function() {
    function callbackEnd() {

      console.log('callbackEnd() called');

      it('GPT returned advars', function() {
        expect(Object.keys(someobj).length).to.beGreaterThan(0);
        console.log('GPT loaded successfully, ' + Object.keys(someobj).length);
      });

    }
  });

})();

【问题讨论】:

  • 您确定在 mocha 测试中声明的 callbackEnd() 已执行,还是 callbackEnd 来自其他地方? (因为 mocha 测试中的 callbackEnd 在 iife 中,我认为它不能在该范围之外加入。
  • 是的,函数 callbackEnd() 被执行,但 it() 没有被执行。我确定这是某种范围问题,但不确定如何设置

标签: javascript asynchronous mocha.js karma-mocha mocha-phantomjs


【解决方案1】:

好了,描述 -> 它 -> 自定义回调函数 -> done();

 "use strict";
(function() {

  describe("Callback Success", function() {

      it('GPT returned advars', function(done) {

        function callbackEnd() {
          expect(Object.keys(someobj).length).to.not.equal(0);
          console.log('GPT loaded successfully, ' + Object.keys(someobj).length);
          done();
        }

      });
  });
})();

【讨论】:

    猜你喜欢
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 2021-02-15
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多