2016-08-18 2 views
0

Я использую утверждение Chai для проверки значений ответов, возвращаемых с сервера, который я создал. Однако 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. Однако, прямо сейчас заявление Assert перед simpleQuery() вызов функции возвращает false (это правильное поведение). И утверждение statment в вызове simpleQuery() возвращает true.

Это действительно странно, и я не могу понять, почему он это делает. Может ли кто-нибудь помочь мне понять это?

ответ

3

Проблема в том, что ваш simpleQuery является асинхронным. В результате тест завершится до того, как будет вызван обратный вызов. Вам нужно показать mocha, ваш тест будет асинхронным, используя обратный вызов done.

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

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