Тестирование статического метода из синглтона в Jest (Node.js) - PullRequest
0 голосов
/ 20 марта 2019
// tester.js
class Tester {
  static loggit(text) {
    return text;
  }
}

module.exports = new Tester();

При тестировании этого синглтона в Node.js с использованием Jest

// tester.spec.js
const Tester = require('./tester.js');

describe('Tester testing', () => {
  it('logs it', () => {
    expect(Tester.loggit('test')).toEqual('test');
  });
});

При выполнении теста я получаю сообщение об ошибке "обнаружена исключительная ситуация объявления. TypeError: Tester.loggit не является функцией"

Я пытался использовать jest.requireActual для ее решения, но это не исправляет ошибку.

Я не хочу экспортировать сам класс, так как он будет единственным в моем приложении.

Любой вклад будет полезен.

1 Ответ

2 голосов
/ 20 марта 2019

Вы хотите экспортировать сам класс, а не экземпляр класса:

module.exports = Tester;

А если у вас есть только static методы, вы можете просто экспортировать объект:

 module.exports = {
  loggit(it) { return it; },
 };

Если вы действительно хотите иметь как одноэлементные, так и статические свойства (какой цели это должно служить ?!), то вы можете получить класс из экземпляра, используя свойство конструктора:

 (new Tester).constructor.loggit("test") 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...