Ошибка Типа: ожидаем (...). 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 не является функцией !
Оглядываясь назад, это очень очевидная ошибка, но, надеюсь, это поможет кому-то в будущем! :-)