Модульный тест метод возврата ожидаемого значения - PullRequest
1 голос
/ 11 марта 2019

Я хотел провести модульное тестирование файла сервиса.

В сервисе у меня есть две функции: getInlineView & breakByRanges.

INPUT

const data = {
    "text": "Do you have questions or comments and do you wish to contact ABC? Please visit our customer support page.",
    "inlineStyleRanges": [],
    "inlineEntityRanges": [{
        "type": "LINK",
        "offset": 83,
        "length": 16,
        "data": {
            "target": "_self",
            "url": "/index.htm"
        }
    }]
}

SO Если я передам выше INPUT на breakData, I get the below OUTPUT`

OUTPUT

[{"data":"Do you have questions or comments and do you wish to contact ABC? Please visit our ","type":"text"},{"data":"customer support ","type":"LINK"},{"data":"page.","type":"text"}]

Ниже приведены мои спецификации,

describe('GenerateInlineTagsService', () => {
  let service: GenerateInlineTagsService;
  beforeEach(() => TestBed.configureTestingModule({}));

  it('should call getInlineView method ', () => {
    const spy = spyOn<any>(service, 'getInlineView').and.returnValue(ENTITY_RANGERS);
    service.getInlineView(data);
    const obj2 = JSON.stringify(ENTITY_RANGERS); // refers to output mock
    expect(JSON.stringify(spy)).toEqual(obj2);
  });
});

Итак, в чем проблема?

Я передаю data в качестве ввода в getInlineView и ожидаем, что возвращаемое значение равно фиктивному значению ENTITY_RANGERS (OUTPUT).

Но я получаю ошибку ниже

Ожидается, что undefined равно "[{" data ":" У вас есть вопросы или комментарии, и выХотите связаться с ABC? Пожалуйста, посетите наш "," type ":" text "}, {" data ":" support support "," type ":" LINK "}, {" data ":" page. "," type":" text "}] '.

Пожалуйста, помогите.

Ниже приведена ссылка на фактическую функцию,

https://stackblitz.com/edit/typescript-qxndgd

1 Ответ

0 голосов
/ 12 марта 2019

Вы пытаетесь сравнить шпиона, которого вы настроили для своей сервисной функции, с фактическим ожидаемым результатом, который, очевидно, не работает.

Измените ваш код на что-то вроде:

it('should call getInlineView method ', () => {
  const spy = spyOn(service, 'getInlineView').and.returnValue(ENTITY_RANGERS);
  expect(spy).not.toHaveBeenCalled();

  // this will get you the mock value you provided in your spy above, as all calls to this function will now be handled by the spy
  const result = service.getInlineView(data);
  expect(spy).toHaveBeenCalledTimes(1);

  const obj2 = JSON.stringify(ENTITY_RANGERS); // refers to output mock
  expect(JSON.stringify(result)).toEqual(obj2);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...