javascript - 如何 SpyOn 原生 JavaScript 函数?比如.find()?
问题描述
我试图模拟this.editedComponentDetailsData.find
以下内容:
editButtonClicked(event) {
let rowData = this.editedComponentDetailsData.find((row) => {
return row.operationalSequenceNumber == this.rowKey;
})
}
这不起作用:
it('should do something', () => {
let result=spyOn(subject.editedComponentDetailsData.prototype,'find').and.returnValue({prop1:''});
});
解决方案
只需分配editedComponentDetailsData
一个像空数组一样可迭代的属性,然后您就可以监视 find,但是您只需在没有原型的情况下访问它,就像在组件内部一样。
beforeEach(() => {
TestBed.resetTestEnvironment();
TestBed.initTestEnvironment(BrowserDynamicTestingModule,
platformBrowserDynamicTesting())
TestBed.configureTestingModule({
declarations: [AppComponent],
providers: [
AppComponent
],
schemas: [NO_ERRORS_SCHEMA]
});
fixture = TestBed.createComponent(AppComponent);
subject = fixture.componentInstance;
subject.editedComponentDetailsData=[]; //mock with empty array
});
it('should do something', () => {
let result=spyOn(subject.editedComponentDetailsData,'find').and.returnValue({prop1:''}); //the spy
});
推荐阅读
- python - 匹配连字符与换行符的组合
- image - 无法使用 yii2 在滑块中显示图像
- xml - 哪个优先:logback.xml 或 logback-test.xml?
- plugins - 如何将 Jmeter 脚本与 UFT 或 QTP 集成
- python - selenium.common.exceptions.WebDriverException:消息:通过 Python unittest 模块执行测试用例时没有这样的会话
- node.js - 通过nodejs express 4中的单个输入上传多个文件的最佳方法是什么?
- android - 如何获取与我的应用程序相关的所有重要信息(如崩溃和错误日志),这些信息存在于 Google Playstore 上
- ios - 在哪里编写强制 iPhone 用户在其 iPhone 中更新 iOS 应用程序的代码?
- python - 文森蒂距离系列
- javascript - javascript:恢复div的背景颜色