我有一个包装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运行?我试图使用承诺,但我没有运气。
答案 0 :(得分:1)
您可以使用qunit
中的asynctest('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.
错过了在这种情况下导致它没有意义的原因