[英]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.