【发布时间】:2019-12-01 06:14:17
【问题描述】:
我正在尝试使用 Jest 来模拟和监视 node_modules 库,但我需要支持:
这是要测试的代码
const mailgun = require('mailgun-js')
const mg = mailgun({
apiKey: process.env.MAIL_GUN_API_KEY,
domain: process.env.MAIL_GUN_DOMAIN,
host: process.env.MAIL_GUN_HOST
})
module.exports = (data) => mg.messages().send(data)
现在测试一下
__mock__/mailgun-js.js
const mailgun = require('mailgun-js')
jest.genMockFromModule('mailgun-js')
module.exports = mailgun
tests/test.js
const mailgun = require('mailgun-js')
jest.mock('mailgun-js', () => {
return jest.fn(() => ({
messages: () => ({
send: jest.fn(() => Promise.resolve())
})
}))
})
expect(mailgun).toHaveBeenCalledTimes(1)
expect(mailgun).toHaveBeenCalledWith({
apiKey: process.env.MAIL_GUN_API_KEY,
domain: process.env.MAIL_GUN_DOMAIN,
host: process.env.MAIL_GUN_HOST
})
现在 toHaveBeenCalledTimes 和 toHaveBeenCalledWith 有效,但我也会检查传递给 .send (data) 的参数
【问题讨论】:
-
通过这种方式,我只能检查直接传递给 mailgun 的参数(apikey、域和主机),但不能检查传递给 send() 的参数
-
你是对的。我添加了一个答案..
标签: jestjs