Angular2+ Огурец и транспортир перехватывает HTTP-вызовы

Я пытаюсь перехватить http-запросы, которые мое приложение Angular2+ делает в моих тестах на огурец. Я пытался с помощью nock безуспешно. Я не верю, что nock перехватывает мои http-звонки. Чего мне не хватает в приведенном ниже коде?

У меня есть класс обслуживания, который делает мои вызовы REST:

@Injectable()
export class RestService {

    getTestdata() {
        this.http.get<ITestData>('/info/testdata', { observe: 'response' })
            .catch(this.handleError)
            .subscribe(response => this._testData.next({ ...response.body }));
    }

}

В моем тестовом файле огурца я делаю:

import { browser, element, by, protractor } from 'protractor';
import { of } from 'rxjs/observable/of';
import * as testData from '../../utilities/data/testData.json';

const { Before, After, Given, When, Then, defineSupportCode } = require('cucumber');
const chai = require('chai').use(require('chai-as-promised'));
const expect = chai.expect;
const nock = require('nock');

defineSupportCode(function ({ setDefaultTimeout }) {
    setDefaultTimeout(120 * 1000);
});

Before(() => {
    nock('http://localhost:9084').log(console.log).get('/info/testdata').reply(200, of(testdata));
});

After(() => {
    nock.cleanAll();
});

Given('something', (next: any) => {
    next();
});

When('the user loads the page', (next: any) => {
    testData['testKey1'] = false;
    testData['testKey2'] = false;

    browser.get('/').then(next());
});

Then('element is { displayed } to the user', (displayed: boolean, next: any) => {
    const testElement = element(by.id('test-element'));

    testElement .isPresent().then(response => {
        expect(response).to.equal(displayed);
        next();
    });
});

Как только страница загружается с помощью browser.get('/'), мои компоненты делают вызов к данной конечной точке. Я считаю, что звонок не перехватывается, потому что testData объект никогда не менял свои ключи (я изменяю значения в When шаг. Я также сделал console.log и это всегда исходные значения, никогда false).

Так же .log(console.log) ничего не делает Я никогда не вижу ничего напечатанного. Что я делаю неправильно?

Есть ли что-то еще, что я могу использовать? Любая помощь будет оценена, спасибо!

0 ответов

Другие вопросы по тегам