2016-08-18 10 views
0

私が作ったサーバーから返されたレスポンスの値をチェックするためにチャイのアサートを使用しています。ただし、渡された値が等しくない場合でも、assertはtrueを返します。 私は例をあげてみましょう:チャイのアサートが正しく機能しない

describe('Tests', function() { 
    it('Simple Query', function() { 

     // assert.equal(2,3); //returns false 

     controller1.simpleQuery(true, 4, "hello", null, function(error, response, context) { 

      assert.equal(2,3); //returns true 

     }); 

    }); 
}); 

[OK]をので、ここで問題です:2しかし、3に等しくないので、このコードでアサート文の両方が(simpleQuery前に、今のassert文をfalseを返す必要があります)関数呼び出しはfalseを返しています(これは正しい動作です)。そして、simpleQuery()呼び出し内のassert statmentがtrueを返しています。

これは正に本当に奇妙なことですが、なぜこれをやっているのかわかりません。誰も私がこれを理解するのを助けることができますか?

答えて

3

問題はsimpleQueryが非同期であることです。その結果、コールバックが呼び出される前にテストが完了します。 doneコールバックを使用して、mochaのテストが非同期であることを示す必要があります。

describe('Tests', function() { 
    it('Simple Query', function(done) { 

     // assert.equal(2,3); //returns false 

     controller1.simpleQuery(true, 4, "hello", null, function(error, response, context) { 

      assert.equal(2,3); //returns true 
      done(); 

     }); 

    }); 
}); 
+0

問題を修正しました。ありがとう! – leMS

関連する問題