这是我的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 摩卡服务器/ ** / * .test.js generateMessage 1)应该生成正确的消息对象
0传球(12ms) 1失败
1)generateMessage 应生成正确的消息对象: TypeError:expect(...)。toBeA不是函数 在Context.it(server / utils / message.test.js:12:31)
npm ERR!测试失败。有关详细信息,请参见上文。
帮助我......
答案 0 :(得分:22)
expect library的所有权已从v21 +捐赠给jest。从那时起,一些方法名称及其功能已被更改。以下对代码的修改将有助于克服问题。
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});
});
});
答案 1 :(得分:0)
以类似的方式,我犯了一个基本的语法错误,我的终端说:
类型错误: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() 与我的 sum(2,2) 值一起传递到 expect() 函数中,导致:TypeError: sum(...).toBe is not a function !
事后看来这是一个非常明显的错误,但希望这对未来的人有所帮助! :-)