Я пытаюсь протестировать этот класс Typescript с помощью Jest (фрагмент, чтобы вы поняли):
import OrderService from '../../../services/api/OrderService';
class InstallationOverview {
// using OrderService somewhere
// ...
}
В своем тесте я использую фермент
shallow(<InstallationOverview />);
Я получаю следующую ошибку:
TypeError: Cannot read property 'AUTH_SERVER_URL' of undefined
1 | class Envs {
2 |
> 3 | static AUTH_SERVER_URL = window["env"]["AUTH_SERVER_URL"];
| ^
4 | static AUTH_CLIENT_SECRET = window["env"]["AUTH_CLIENT_SECRET"];
5 | static SENSOR_TEST_SERVICE_WS = window["env"]["SENSOR_TEST_SERVICE_WS"];
6 | static SENSOR_TEST_SERVICE_URL = window["env"]["SENSOR_TEST_SERVICE_URL"];
at Object.<anonymous> (src/util/Envs.tsx:3:28)
at Object.<anonymous> (src/services/SensorTestWebsocketClient.tsx:3:1)
at Object.<anonymous> (src/redux/reducers/index.js:17:1)
at Object.<anonymous> (src/redux/store/index.js:2:1)
at Object.<anonymous> (src/util/NotificationManager.tsx:1:1)
at Object.<anonymous> (src/services/api/RestService.tsx:2:1)
at Object.<anonymous> (src/services/api/OrderService.tsx:1:1)
at Object.<anonymous> (src/content/order/installation/InstallationOverview.tsx:21:1)
at Object.<anonymous> (src/tests/InstallationOverview.test.jsx:2:1)´´´
Как видите, объект env в окне отсутствует. НО для тестирования класса InstallationOverview мне не нужны все другие сервисы, импортированные OrderService.
Я уже пытался насмехаться над этим с
jest.mock('./src/services/api/OrderService');
, но это не имеет никакого влияния, я думаю, что это применяется ПОСЛЕ обмелевания, поэтому после исключения.
тогда я попытался создать фиктивный файл для OrderService и поместить его в __mocks__
как для теста, так и для целевого класса.
Затем я попытался установить jest config в пакете. json -
"jest": {
"moduleNameMapper": {
"OrderService": "<rootDir>/tests/__mocks__/OrderService.tsx"
}
}
Однако я перепутал jest и энзим, потому что сейчас не имею понятия, как это работает.