【问题标题】:How to SpyOn native JavaScript functions? Such as .find()?如何 SpyOn 原生 JavaScript 函数?比如.find()?
【发布时间】:2019-07-08 11:00:07
【问题描述】:

我试图在下面模拟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:''});
  });

【问题讨论】:

    标签: javascript angular unit-testing jasmine karma-jasmine


    【解决方案1】:

    只需为 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
      });
    

    【讨论】:

    • 这很容易。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 2017-02-12
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多