unit-testing - 如何模拟在构造函数 ES6 中调用的“new Class()” - Jasmine
问题描述
我正在尝试使用 Jasmine 对我的名为 MyClass 的 ES6 类进行单元测试。如下。
import SomeOtherClass from '../../someOtherClass';
export default class MyClass {
constructor(){
this.someOtherClass = new SomeOtherClass(param1, param2);
}
}
问题是 SomeOtherClass 运行的一些代码会产生错误,因为提供的数据不是真实的。当我在单元测试中创建一个 new MyClass() 时,我想模拟那个类而不是被调用。我尝试了很多东西,但没有任何效果。他们之中有一些是
sinon.createStubInstance(SomeOtherClass)
或者
spyOn(NavigationBarComponent.prototype, 'constructor').and.callFake();
我尝试用 Jasmine 和 Sinon.js 做到这一点。任何帮助将不胜感激。谢谢
解决方案
我认为通常如果您想模拟一个依赖项,那么您将需要注入该依赖项并让测试控制注入它自己的依赖项。所以构造函数是一种简单的方法。
export default class MyClass {
constructor(someOtherClassInstance){
this.someOtherClass = someOtherClassInstance;
}
}
现在,您的测试可以在实例化时提供它的存根或模拟实例MyClass
。
推荐阅读
- swift - Can I use the Snapchat SDK (SnapKit) with SwiftUI?
- sql - 查询从 SELECT FROM VALUES 中查找电子邮件
- winapi - 为什么 WASAPI 环回捕获会产生可变缓冲区?
- android - 在 Android Studio 的插件中找不到 Android Drawable Importer
- c++ - 有没有办法在c ++中分解大数
- python-3.x - 函数在循环内返回?
- sql - 添加 JOIN 语句时值增加
- r - geom_text 和 geom_jitter 正在删除我的 df 的所有行,即使修改了限制
- python - Python一种过滤字母而不是数字之间特定字符的方法
- python - 检查文件夹“A”中的任何图像文件(.JPG)是否存在文件夹“B”中的注释文件(.XML)