Как проверить модуль шутки - PullRequest
0 голосов
/ 12 февраля 2020
// utils.js
var someModule = require('someModule');

someModule.setKey('API_KEY');

Я хочу проверить setKey функцию. Итак, я написал ниже пример модульного теста.

jest.mock('someModule, () => {
   return {
     setKey: jest.fn()
   }
})

describe('utils', () => {
   afterEach(()=> {
      jest.clearAllMocks()
   })

   it(`test case 1`, () => {})

   it(`test case utils`, () => {
       expect(someModule.setKey.mocks.calls).toHaveLength(1)
   })
});

Последний тест не пройден, но если я переместил последний тест как первый, то он сработает. Поскольку функция clearAllMocks не выполняется.

Каким должен быть хороший способ ее проверки?

1 Ответ

0 голосов
/ 13 февраля 2020

должно работать. Вот пример:

utils.js:

const someModule = require('someModule');

function main() {
  someModule.setKey('API_KEY');
}

module.exports = main;

Поскольку someModule не является реальным модулем, поэтому я использую опцию {virtual: true}.

utils.test.js:

const main = require('./utils');
const someModule = require('someModule');

jest.mock(
  'someModule',
  () => {
    return { setKey: jest.fn() };
  },
  { virtual: true },
);

describe('60192332', () => {
  afterEach(() => {
    jest.clearAllMocks();
  });
  it('should set key', () => {
    main();
    expect(someModule.setKey.mock.calls).toHaveLength(1);
  });
});

Результаты модульных испытаний со 100% покрытием:

 PASS  stackoverflow/60192332/utils.test.js (6.732s)
  60192332
    ✓ should set key (5ms)

----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------|---------|----------|---------|---------|-------------------
All files |     100 |      100 |     100 |     100 |                   
 utils.js |     100 |      100 |     100 |     100 |                   
----------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        8.38s, estimated 13s
...