使用jest模拟请求时的TypeError

时间:2016-05-10 19:42:03

标签: node.js unit-testing jestjs

我对节点相对较新,并且在尝试使用jest模拟request时遇到问题。

如果我要测试的文件有require('request'),并且我尝试运行npm test,则会收到此错误:

FAIL  __tests__/sum-test.js (0.291s)
● sum › it adds 1 + 2 to equal 3
  - TypeError: The super constructor to `inherits` must have a prototype.
        at Object.exports.inherits (util.js:756:11)
        at Object.<anonymous> (node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js:44:6)
        at Object.<anonymous> (node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js:16:18)

这是我的package.json,如果有帮助的话:

{
  "name": "jesttest",
  "version": "1.0.0",
  "scripts": {
    "test": "jest"
  },
  "devDependencies": {
    "jest-cli": "^12.0.2"
  },
  "dependencies": {
    "request": "^2.72.0"
  }
}

任何人都知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:4)

在测试文件中添加jest.unmock('request')

当你需要文件中的某些内容时,Jest会模拟一个假的require对象。在这种情况下,请求不是真正的请求。所以告诉jext不是模拟请求。