Ошибка Типа: ожидаем (...). ToBeA не является функцией

Это мой файл message.test.js.

  var expect = require('expect');

  var {generateMessage} = require('./message');

  describe('generateMessage', () => {
    it('should generate correct message object', () => {
      var from = 'Jen';
      var text = 'Some message';
      var message = generateMessage(from, text);

      expect(message.createdAt).toBeA('number');
      expect(message).toInclude({from, text});
  });
});

ОШИБКА: priya @ priya-pro: ~ / node-chat-app $ npm test

node-chat-app@1.0.0 test / home / priya / node-chat-app mocha server / ** / *. test.js generateMessage 1) должен сгенерировать правильный объект сообщения

0 прохождение (12 мс) 1 сбой

1) generateMessage должен генерировать правильный объект сообщения: TypeError: Ожидайте (...). ToBeA не является функцией в Context.it (server/utils/message.test.js:12:31)

нпм ERR! Тест не пройден Смотрите выше для более подробной информации.

Помоги мне...

2 ответа

Решение

Право собственности на ожидаемую библиотеку было передано в шутку с v21+. С тех пор некоторые имена методов и их функциональность были изменены. Следующая модификация кода поможет преодолеть проблему.

var expect = require('expect');
var {generateMessage}  = require('./message');

describe('generateMessage', () => {
   it('should generate correct message object', () => {

       var from = 'Jen';
       var text = 'Some message';
       var message = generateMessage(from, text);

       expect(typeof message.createdAt).toBe('number');
       expect(message).toMatchObject({from, text});
   });

});

Точно так же я допустил базовую синтаксическую ошибку, мой терминал говорил:

TypeError: sum(...). ToBe не является функцией.

Вот код , который я использую как в моем main.js файл и мой main.test.js файл:

main.js

      function sum(a, b){

return a + b

}


module.exports =  sum;

main.test.js

      const sum = require('./main')
   


test('adds two numbers together', ()=>{

    expect(sum(2,2).toBe(4))
    
    
    })

Я все думал, что мой синтаксис module.exports / require был чем-то неправильным. После многих попыток я тщательно выполнил руководство по Jest.js - и модульный тест прошел! Затем я сравнил его с моей нефункциональной копией и обнаружил ошибку в моем файле main.test.js :

main.test.js

          expect(sum(2,2).toBe(4))
    

что это должно быть:

          expect(sum(2,2)).toBe(4)

Обратите внимание на положение круглых скобок - вместо того, чтобы связывать сопоставление .toBe () с функцией expect (), я невольно передавал .toBe () в функцию expect () с моим значением sum(2,2), что приводило к: TypeError:sum(...). ToBe не является функцией !

Оглядываясь назад, это очень очевидная ошибка, но, надеюсь, это поможет кому-то в будущем! :-)

Другие вопросы по тегам