2017-01-18 7 views
0

У меня есть следующий тест мокко. Я пытаюсь утверждать и проверять неудачу. Всякий раз, когда происходит отказ в утверждении в обратном вызове, мокка все еще думает, что тест прошел. Я пробовал оба модуля assert и expect. ВыходУтверждение в обратном вызове Mocha не работает

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(); 
      }); 
     }); 

    }); 
}); 

Mocha - с утверждением/ожидается выход

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', например 'it ('должен быть равен друг другу, как для Queue, так и для SecureQueue', function (done) {' – char

ответ

1

С вашего тестирования асинхронного поведения (в этом случае обратного вызова, а чем обещание), вам необходимо добавить обратный вызов в it() (обычно называемый done), чтобы сообщить мокко, что ваш тест завершен:

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(); 
    }); 
}); 

Синтаксис для ожидать не следует иметь как be и equal, тестирование на равенство можно записать в любом из этих 2-й форм с использованием expect.js:

expect(1).to.equal(2); 
expect(1).to.be(2); 

 Смежные вопросы

  • Нет связанных вопросов^_^