【发布时间】:2026-02-13 22:20:02
【问题描述】:
我想模拟从模块导出返回的类的方法,我很难设置 Jest 测试来这样做。
这是我所拥有的:
// src/jwks.js
const jwksClient = require('jwks-rsa')
const client = jwksClient({...})
module.exports = client
// src/auth.js
const jwksClient = require('./jwks')
function getKey (header, callback) {
jwksClient.getSigningKey(header.kid, function (err, key) {
console.log("inside getSigningKey")
var signingKey = key.publicKey || key.rsaPublicKey
callback(err, signingKey)
})
}
exports.getKey = getKey
// src/auth.test.js
const jwksClient = require('./jwks')
const { getKey } = require('./auth')
const mockGetSigningKey = jest.fn(() => {
console.log("mockGetSigningKey called")
return {
publickey: "the-key"
}
})
jest.mock('./jwks', () => {
return jest.fn().mockImplementation(() => {
return {
getSigningKey: mockGetSigningKey
}
})
})
test('test mocked behavior', () => {
getKey("somekey", (err, key) => {
console.log("received key: " + key)
})
}
我收到以下错误: TypeError: jwksClient.getSigningKey 不是函数
2 |
3 | function getKey (header, callback) {
> 4 | jwksClient.getSigningKey(header.kid, function (err, key) {
| ^
5 | console.log("inside getSigningKey")
6 | var signingKey = key.publicKey || key.rsaPublicKey
7 | callback(err, signingKey)
我该如何正确地做到这一点?我尝试了很多不同的变体,但没有一个对我有用。
【问题讨论】:
标签: javascript unit-testing mocking jestjs