Модульные тесты для классов JavaScript (ES6) - заглушки не работают

1

У меня проблема с модульными тестами в проекте javascript (реакция). Требуется проверить класс ApiClient. Для этого мне придется изолировать настройкиApi, HttpClient и ресурсы. Я использую инструменты: мокка, чай, синус

Я также пытался использовать rewire, и я не мог. Я уже читал, что это может быть из-за babel.

Я пробовал такие заглушки:

sinon.stub(ApiClient.prototype, 'constructor');

У кого-нибудь была эта проблема, можете ли вы дать мне руку?

Ниже приведена часть кода:

Файл ApiClient.js

import settingsApi from '../../settings/api.json';
import HttpClient from './HttpClient';
import resources from './resources';

class ApiClient {
  constructor() {
    this.httpClient = new HttpClient(settingsApi);
  }

  get flux() {
    return new resources.resourceOne(this.httpClient);
  }
}

export default ApiClient;

FileHttpClient.js

class HttpClient {
/**
 * 
 * @param {*} config 
 */
constructor(config) {
    this.basePath = '${config.protocol}://${config.host}:${config.port}';
}

post(resource, options = {}, formatResponse) {
    return this.request({
        method: 'POST',
        resource,
        options,
        formatResponse
    });
}


export default HttpClient;
  • 0
    Просто sidenote: sinon.stub(ApiClient.prototype, 'contructor'); имеет орфографическую ошибку. Должен быть constructor
  • 0
    Спасибо, я уже изменил это.
Показать ещё 2 комментария
Теги:
unit-testing

1 ответ

0
Лучший ответ

Я уже мог решить свою проблему, я использовал плагин babel-plugin-rewire (https://github.com/speedskater/babel-plugin-rewire):

Монтаж:

yarn add babel-core babel-plugin-rewire --dev

Добавить в.babelrc

"plugins": [
    "rewire"
]

Вычислить пример зависимостей:

ApiClient.__Rewire__('settingsApi', {
  paramConfig: 'config',
});

ApiClient.__Rewire__('HttpClient', class HttpClient {
    constructor(config) {
    }
});

ApiClient.__Rewire__('resources', {
    resourceOne: class {
       constructor(httpClient) {       
       }
});

Теперь вместо вызова зависимостей вызывается вышеуказанные функции.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню