如何在Jasmine单元测试中订阅Observable?

我有一些模拟的json数据,我想读入一些单元测试。我把它变成一个实用程序,这样其他单元测试文件就可以使用它了。例如:

@Injectable({providedIn: 'root'})
export class MockUtilsService {
     
    constructor(private http: HttpClient) {}

    loadData(): Observable<any[]> {
        // Read local json file for mock data
        return this.http.get<any[]>('./mock-data.json');
    }
}

然后在单元测试中:

beforeEach(async(() => {
    
    TestBed.configureTestingModule({
        providers: [MockUtilsService]
    }).compileComponents();

}));

it('retrieve data', () => {
    
    const service = TestBed.get(MockUtilsService);
    service.loadData().subscribe(data => {
        expect(data).toBeDefined();
    });

});

当我运行测试时,我看到错误:‘检索数据’没有预期。‘

我不知道是否没有调用loadData()方法,或者是否存在某种异步问题,即测试在调用subscribe方法之前完成。

转载请注明出处:http://www.tianshuzhineng.com/article/20230526/1026265.html