我有一個Angular 2服務連接到Angular Http服務,使用Rxjs 5連接到一個寧靜的web服務。 getObjects調用只是以有意義對象的Observable數組的形式返回解析的Json。我一直試圖讓我的模擬Http響應返回observable來解決,但我還沒有真正找到一個工作的答案。Rxjs5使用Angular 2測試
測試代碼:
import { getTestBed } from '@angular/core/testing';
import { MockBackend } from '@angular/http/testing';
import { TestScheduler } from "rxjs";
import { expect } from 'chai';
import { spy } from 'sinon';
import TestingUtilities from "../shared/test.utilities";
import Service from './service';
import ReturnObject from "../returnobject";
describe(`ServiceTests`,() => {
let MOCK_DATA: string = ...mocked JSON string response...;
let service: Service
let backend: MockBackend
let scheduler: TestScheduler
function assertDeepEqualFrame(actual:any, expected:any) {
console.log("test");
if (!expected === actual) {
throw new Error('Frames not equal!');
}
}
beforeEach(() => {
TestingUtilities.configureTestingModuleForMockHttp(getTestBed(), function() {
return Service
});
backend = getTestBed().get(MockBackend);
service = getTestBed().get(EarthquakeService);
scheduler = new TestScheduler(assertDeepEqualFrame);
});
it('should return mocked data',() => {
TestingUtilities.mockHttpResponse(backend, MOCK_DATA);
let observables = service.getObjects();
scheduler.expectObservable(observables).toBe("", functionToCreateMockObjects());
});
的TestingUtilities僅僅是嘲笑由角提供的HTTP服務呈現在https://semaphoreci.com/community/tutorials/testing-angular-2-http-services-with-jasmine解決方案圍繞方便包裝。上面的代碼編譯,但它實際上並沒有返回嘲諷的Observables,也沒有聲明任何東西。我正在努力查看應該如何使用TestScheduler來調用現有服務並獲取可觀察對象以進行驗證。有人有主意嗎?
這是我最終解決的問題。我錯誤的原因是我設置TestUtilities類以共享Http服務的模擬方式:我從上面提到的URL複製過來,並忘記修改URL爲動態的。這最終成爲我所有問題的根源;在解決這個問題之後,其他人通過訂閱服務呼叫的輸出來落實到位。感謝發佈! – Skeeterdrums