mock 方法时 新new的方法 如何传值
时间: 2024-05-03 15:17:36 浏览: 17
在使用 `new` 关键字创建一个对象时,可以在括号中传递参数来初始化这个对象的属性。如果想要在 mock 方法时新创建的对象也能够接受参数,可以使用 Jest 提供的 `jest.fn()` 方法来创建一个 mock 函数,并让它返回一个新创建的对象。
例如,假设我们有一个构造函数 `Person`,它接受两个参数 `name` 和 `age`,并且有一个 `sayHello` 方法:
```javascript
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
return `Hello, my name is ${this.name} and I'm ${this.age} years old.`;
}
}
```
现在我们想要 mock 掉 `Person` 构造函数,并让它返回一个新创建的对象。我们可以这样做:
```javascript
const mockPerson = jest.fn().mockImplementation((name, age) => {
return {
name,
age,
sayHello() {
return `Mock Hello, my name is ${this.name} and I'm ${this.age} years old.`;
}
}
});
// 使用 mockPerson 创建一个新的对象
const mockObj = new mockPerson("Jack", 20);
console.log(mockObj.sayHello()); // 输出 "Mock Hello, my name is Jack and I'm 20 years old."
```
在这个例子中,我们使用 `jest.fn()` 方法创建了一个 mock 函数 `mockPerson`,并在其实现中返回一个新创建的对象。在这个新创建的对象中,我们将传入的 `name` 和 `age` 赋值给了对象的属性,同时重新定义了 `sayHello` 方法来返回一个 mock 字符串。最后,我们使用 `new` 关键字并传入参数来创建了一个新的对象 `mockObj`,并调用了它的 `sayHello` 方法来输出 mock 字符串。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)