0

我正在使用ag-grid,我需要在一段代码上编写 Jasmine 单元测试。这段代码使用我们调用的类调用我们的休息服务器RestService,我想用它 spyOn来模拟这些调用和响应。在我使用的代码的其他地方,spyOn(RestService, 'function').and.returnValue()它完全没有问题。此代码由 自动调用,ag-grid并且它位于具有getRows函数的数据源对象中。在这里它调用api返回下一页数据。该信息可以在https://www.ag-grid.com/javascript-grid-infinite-scrolling/上找到

var dataSource = {
    rowCount: null,
    getRows: function(params) {
        console.log("asking for " + params.startRow + " to " + params.endRow);
        // rest service call happens in here
        // something like params.context.mycontext.restService.fetchNextRows(data);
    }
}

我有一个spyOnspyOn(restService, 'fetchNextRows').and.returnValue(Observable.of(something))但它不会为此工作。它尝试实际调用其余服务并失败,因为它在单元测试期间没有运行。有谁知道解决方法?

我的 spec.ts 使用:

 TestBed.configureTestingModule(
 imports everything i use + has 
 providers: [RestService]
 ).compileComponents();

 let restService = TestBed.get("RestService");
 spyOn(restService, 'fetchNextRows').and.returnValue(Observable.of("mocked json"));

 fixture = TestBed.createComponent(ActionComponent);
 component = fixture.componentInstance;
4

1 回答 1

0

在您spec.ts的 中,RestServiceTestBed.

let restService = TestBed.get(RestService); 
于 2020-01-01T11:28:47.533 回答