gpt4 book ai didi

javascript - 模拟依赖的构造函数 Jest

转载 作者:IT老高 更新时间:2023-10-28 23:03:09 26 4
gpt4 key购买 nike

我是 Jest 的新手。我设法模拟了我自己的东西,但似乎一直在模拟一个模块。特别是构造函数。

用法.js

const AWS = require("aws-sdk")
cw = new AWS.CloudWatch({apiVersion: "2010-08-01"})
...
function myMetrics(params) {
cw.putMetricData(params, function(err, data){})
}

我想在测试中做这样的事情。

const AWS = jest.mock("aws-sdk")
class FakeMetrics {
constructor() {}
putMetricData(foo,callback) {
callback(null, "yay!")
}
}

AWS.CloudWatch = jest.fn( (props) => new FakeMetrics())

但是,当我在 usage.js 中使用它时,cw 是 mockConstructor 而不是 FakeMetrics

我意识到我的方法可能“不太习惯”,所以我会很感激任何指针。

这是一个最小的例子 https://github.com/ollyjshaw/jest_constructor_so

npm install -g jest

开 Jest

最佳答案

以上答案有效。但是,在使用 jest 一段时间后,我会使用 mockImplementation对模拟构造函数很有用的功能。

下面的代码可能是一个例子:

import * as AWS from 'aws-sdk';

jest.mock('aws-sdk', ()=> {
return {
CloudWatch : jest.fn().mockImplementation(() => { return {} })
}
});

test('AWS.CloudWatch is called', () => {
new AWS.CloudWatch();
expect(AWS.CloudWatch).toHaveBeenCalledTimes(1);
});

请注意,在示例中,new CloudWatch() 只返回一个空对象。

关于javascript - 模拟依赖的构造函数 Jest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com