下面是模拟文件__mocks__/@optimizely/optimizely-sdk.js
const optimizelySDK = jest.requireActual('@optimizely/optimizely-sdk')
optimizelySDK.createInstance().onReady = () => ({ success: false }))
module.exports = optimizelySDK
这是我的测试文件Optimizely.test.js
import optimizelySDK from '@optimizely/optimizely-sdk'
test('onReady', () => {
const response = optimizelySDK.createInstance().onReady()
expect(response).toBe({ success: false })
})
我想我可能搞错了。当我和房客一起尝试这个的时候,这个效果很好。我相信这是因为optimizelySDK是一个类。我觉得我应该嘲笑你。如何成功地模拟和测试optimizelySDK?
发布于 2022-05-31 11:35:24
对于在谷歌( Google )上遇到这种情况的人来说,我也遇到了同样的问题,并让它在开玩笑的情况下工作:
jest.mock('@optimizely/optimizely-sdk', () => ({
...jest.requireActual('@optimizely/optimizely-sdk'),
createInstance: () => ({
getEnabledFeatures: jest.fn().mockReturnValueOnce(['featureA', 'featureB']),
onReady: jest.fn().mockResolvedValueOnce({ status: 200 })
})
}))
describe('my-test', () => {
it('should pass', async () => {
const result = await getFeatures()
console.log(result) // ['featureA', 'featureB']
// assert on result here
});
});
我的代码看起来像是:
const getFeatures = async (event) => {
try {
const optimizelyInstance = optimizelySDK.createInstance({
sdkKey: process.env.OPTIMIZLEY_SDK_KEY,
});
const optimizelyParameters = {}
return optimizelyInstance.onReady().then(() => {
const result = optimizelyInstance.getEnabledFeatures('id', optimizelyParameters);
return result;
});
} catch (err) {
console.error('Could not get features', err);
}
};
https://stackoverflow.com/questions/64583077
复制相似问题