Как шпионить за вещами, внесенными с помощью require () в Жасмин?или "импортировать * как foo из 'места'" - PullRequest
1 голос
/ 12 апреля 2019

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

Первоначально я импортировал детектор, используя:

import * as DetectRTC from 'detectrtc';

Затем я использовал его внутри такой функции:

const os: string = DetectRTC.osName;

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

Поэтому я переключился на захват библиотеки внутри функции вИспользуйте вопрос require (), чтобы сделать тестирование более простым / возможным:

const detectRTC = require('detectrtc');

const os: string = detectRTC.osName;

Оба эти подхода работают в реальной программе, я должен добавить,Но как я могу spyOn и вернуть некоторые поддельные значения?

Я нашел это https://github.com/jasmine/jasmine/issues/1414, которое предполагает, что это может быть ошибка жасмина, но я не уверен, что я прав в этой оценке, поскольку это может быть другой случай.

Я думаю, что проблема сосредоточена на require(), и тот факт, что он не соответствует синтаксису spyOn(object, 'function'), но я не уверен.

Заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 16 апреля 2019

Я нашел решение для этого. Проблема заключалась в том, что detertc импортировался как объект, а другие, которые легче протестировать, - это больше список функций. Поэтому я обернул DetectorTTC в геттере и посмеялся над этим, а не над самим DetectrTC:

import * as DetectRTC from 'detectrtc'; 
getDetectRTC(): any {
    return DetectRTC;
}

Тогда я подсмотрел эту функцию следующим образом:

const detectRTCspy = spyOn(component, 'getDetectRTC').and.returnValue(mockDetectRTC);

Объявив фиктивный объект, который я хотел вернуть.

Надеюсь, это полезно для всех, кто сталкивается с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...