簡體   English   中英

類型錯誤:expect(…).toBeA 不是函數

[英]TypeError: expect(…).toBeA is not a function

這是我的 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 通過 (12ms) 1 失敗

1) generateMessage 應該生成正確的消息對象:TypeError: expect(...).toBeA is not a function at Context.it (server/utils/message.test.js:12:31)

npm 錯誤! 測試失敗。 有關更多詳細信息,請參見上文。

幫我...

expect 庫的所有權已從 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});
   });

});

以類似的方式,我犯了一個基本的語法錯誤,我的終端說:

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() 與我的 sum(2,2) 值一起傳遞到 expect() 函數中,結果是: TypeError: sum(...).toBe 不是函數

事后看來這是一個非常明顯的錯誤,但希望這對將來的人有所幫助! :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM