2016-06-21 4 views
0

console.logをラップするログサービスがあります。 console.logが非同期であるため、テストするのが難しいです。私はconsole.logを上書きしますが、私はまだ非同期の問題があります。私のアサート後にconsole.log関数が呼び出されています。Emberの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

何か特別な理由がありますEmberのLoggerクラスを使用する代わりにこれをやっていますか? – runspired

+0

学習目的と楽しみ。 – Taztingo

答えて

1

あなたが

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 はあなたが

console.log.bind(console); //I am binding it because in my real code the console is looked up in a map.ミス何かのように見えます(非同期アサーションのために)andThenラッパーを使用することができますチェック非同期(async)のためのエンバーと罰金

を作品qunitから非同期を使用することができますこの状態では意味がありません

関連する問題