我正在使用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);
}
}
我有一个spyOn
,spyOn(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;