Ember如何测试我的console.log包装器?

时间:2016-06-21 17:48:48

标签: javascript ember.js

我有一个包装console.log的日志服务。我测试它有困难,因为console.log是异步的。我重写了console.log,但我仍然遇到异步问题。我的断言后调用了console.log函数。

wrapper(msg) {
  console.log.bind(console); //I am binding it because in my real code the console is looked up in a map.
  console.log(msg);
}

test('log() can handle valid mask', function (assert) {
  let passed = false;
  subject = this.subject();
  console.log = function() {
    passed = true;
  };  

  subject.wrapper('testing');                        
  assert.equal(passed, true);
});

如何让它等待console.log运行?我试图使用承诺,但我没有运气。

1 个答案:

答案 0 :(得分:1)

您可以使用qunit

中的async
test('log() can handle valid mask', function (assert) {
  let passed = false;
  debugger;
  console.log = function() {
    setTimeout(function() {
          passed = true;
    }, 0);
  };

  var done1 = assert.async();
  wrapper('testing');

  setTimeout(function() {
    assert.equal(passed, true);
    done1();
  }, 100);
});

http://jsbin.com/nozoruxori/edit?js,output 工作正常

使用Ember进行异步检查

可以使用andThen包装器(用于异步断言)

也看起来console.log.bind(console); //I am binding it because in my real code the console is looked up in a map.错过了在这种情况下导致它没有意义的原因