У меня есть услуга Угловая 2, связанная с Угловой функцией Http с Rxjs 5 для подключения к спокойной веб-службе. Вызов getObjects просто возвращает обработанный Json в виде массива Observable значимых объектов. Я пытаюсь получить наблюдаемый, который возвращается, чтобы разрешить с моим издеваемым ответом Http, но я на самом деле не нашел рабочего ответа на это.Rxjs5 Тестирование с углом 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