我想在Jest中模拟节点Stripe SDK,因为我不想从Stripe运行模拟API服务器,但是我不知道如何去做。我正在创建一个__mocks__
目录并添加stripe.js
,但是我无法导出任何内容。
我通常在致电TypeError: Cannot read property 'create' of undefined
时得到strypegw.charges.create()
。我使用的是ES6模块语法,所以我import stripe from 'stripe'
。
答案 0 :(得分:0)
这是一个简单的解决方案:
jest.mock("stripe", () => {
return jest.fn().mockImplementation(() => {
return {
charges: {
create: () => "fake stripe response",
},
};
});
});
我在有关ES6 Class Mocks的笑话文档中找到了它
答案 1 :(得分:0)
--default-authentication-plugin=mysql_native_password
答案 2 :(得分:0)
将其添加到帮助函数中,并在必要的安装文件或测试顶部调用它。
// Mocking Stripe object
const elementMock = {
mount: jest.fn(),
destroy: jest.fn(),
on: jest.fn(),
update: jest.fn(),
};
const elementsMock = {
create: jest.fn().mockReturnValue(elementMock),
};
const stripeMock = {
elements: jest.fn().mockReturnValue(elementsMock),
createToken: jest.fn(() => Promise.resolve()),
createSource: jest.fn(() => Promise.resolve()),
};
// Set the global Stripe
window.Stripe = jest.fn().mockReturnValue(stripeMock);
通过这种方法,您也可以轻松测试与条带相关的代码
// Ex. of a token successfully created mock
stripeMock.createToken.mockResolvedValue({
token: {
id: 'test_id',
},
});
// Ex. of a failure mock
stripeMock.createToken.mockResolvedValue({
error: {
code: 'incomplete_number',
message: 'Your card number is incomplete.',
type: 'validation_error',
},
});