2017-01-18 9 views
0

次のモカテストがあります。私はアサーションを入れて失敗をテストしようとしています。コールバックでアサーションに失敗があると、モカはまだテストが合格したと考えます。私はassertモジュールとexpectモジュールの両方を試しました。モカコールバックのアサーションが機能しない

var sendSecureQueue = SecureQueue(secureBullOptions.encryption, "Server A"); 
var receiveSecureQueue = SecureQueue(secureBullOptions.encryption, "Server A"); 

describe('SecureQueue', function() { 
    describe('and() and process() - unencrypted', function() { 
     it('should be equal to each other, for both Queue and SecureQueue', function() { 
      var sendSecureData = {msg: "Hello"}; 
      console.log("Send Secure Data: " + util.inspect(sendSecureData)); 
      sendSecureQueue.add(sendSecureData); 

      receiveSecureQueue.process(function (job, done) { 
       var receivedSecureData = job.data; 
       console.log("Received secure data", util.inspect(receivedSecureData)); 

       //**Testing Force a Failure** 
       //assert.equal(1,2); 
       //**Testing Force a Failure** 
       expect(1).to.be.equal(2); 

       done(); 
      }); 
     }); 

    }); 
}); 

モカ出力 - アサーションと/期待:

SecureQueue 
    and() and process() - unencrypted 
Send Secure Data: { msg: 'Hello' } 
     ✓ should be equal to each other, for both Queue and SecureQueue            

Received secure data { msg: 'Hello' } 
(node:16349) Warning: a promise was created in a handler at /usr/apps/myapp/node_modules/bull/lib/queue.js:688:9 but was not returned from it, see ... 
    at new Promise (/usr/apps/myapp/node_modules/bluebird/js/release/promise.js:77:14) 

    1 passing (120ms) 

(node:16349) Warning: .then() only accepts functions but was passed: [object Object] 

モカ出力 - アサーション/期待コメントアウト:

SecureQueue 
    and() and process() - unencrypted 
Send Secure Data: { msg: 'Hello' } 
     ✓ should be equal to each other, for both Queue and SecureQueue            


    1 passing (102ms) 

Received secure data { msg: 'Hello' } 
+2

行われたコールバックは、パラメータとして渡されるべき例えば ​​'it'スイートのコールバックに'それは(QueueとSecureQueueの両方のためにお互いに等しくなければなりません '、function(done){' – char

答えて

1

あなたのではなく、この場合には(コールバックを非同期動作をテストするので、約束よりも)、it()(通常はdoneと呼ぶ)にコールバックを追加して、テストが完了したことをmochaに伝える必要があります。

it('should be equal to each other, for both Queue and SecureQueue', function (done) { 
    var sendSecureData = {msg: "Hello"}; 
    console.log("Send Secure Data: " + util.inspect(sendSecureData)); 
    sendSecureQueue.add(sendSecureData); 

    receiveSecureQueue.process(function (job) { 
    var receivedSecureData = job.data; 
    console.log("Received secure data", util.inspect(receivedSecureData)); 

    expect(1).to.equal(2); 
    done(); 
    }); 
}); 

期待がbeequalの両方を持つべきではないの構文、平等のためのテストはexpect.jsを使用して、これらの2つの形態のいずれかで書くことができます。

expect(1).to.equal(2); 
expect(1).to.be(2); 
関連する問題