javascript - 如何监视原生 JavaScript 函数?比如.find()?

标签 javascript angular unit-testing jasmine karma-jasmine

我正在尝试在以下内容中模拟 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 分配一个像空数组一样可迭代的属性,然后您就可以监视查找,但您只需在没有原型(prototype)的情况下访问它,就像在组件内部一样。

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
  });

关于javascript - 如何监视原生 JavaScript 函数?比如.find()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56933483/

相关文章:

javascript - 如何阻止变量连接

javascript - 如何从 Jasmine 测试 Angular 2/4 触发文档级事件

javascript - Angular2 和 typescript 错误

android 测试经常停在 'instantiating tests'

javascript - 连续 AJAX 调用的 "async: false"替代方案

javascript - HTML表格,单独编辑记录

javascript - 用另一个数组中的值构建一个数组

angular - 如何突出显示带有 Angular 颜色的选定垫列表项?

php - AspectMock 似乎没有模拟静态方法

c# - ViewBag 属性在单元测试中始终返回 null