TypeError:expect(...)。toBeA不是函数

时间:2018-04-04 10:09:38

标签: javascript node.js socket.io node.js-connect

这是我的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!测试失败。有关详细信息,请参见上文。

帮助我......

2 个答案:

答案 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 不是函数。

这是我在 ma​​in.js 文件和 ma​​in.test.js 文件中使用的代码:

ma​​in.js

function sum(a, b){

return a + b

}


module.exports =  sum;

ma​​in.test.js

const sum = require('./main')
   


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

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

我一直认为我的 module.exports/require 语法有些错误。经过多次尝试,我一丝不苟地遵循了一个 Jest.js 教程——单元测试通过了!然后我将它与我的非功能性副本进行了比较 - 我在我的 ma​​in.test.js 文件中发现了错误:

ma​​in.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 !

事后看来这是一个非常明显的错误,但希望这对未来的人有所帮助! :-)