Невозможно изменить поведение Jest-макета - PullRequest
0 голосов
/ 29 марта 2019

У меня возникла проблема:

1.) Настройка копирует в beforeEach

2.) Попробуйте изменить некоторые фиктивные поведения в отдельных тестах, где они должны быть более уникальными

3.) Я не могу изменить значения, установленные в # 1

Это частично псевдокод, поэтому синтаксис может быть отключен, поскольку у меня нет исходного кода передо мной:

import Module from '../module';

...

jest.mock('../module');

describe('test suite', {

let mockFn = undefined;

beforeEach(() => {
   mockFn = jest.fn(() => 'banana');
   Module.function = mockFn;
});

test('happy test', () => {
   // this test needs Module.function to return 'banana', so it doesn't 
   // have any issues, as calls to Module.function return 'banana'
});

test('test with issue', () => {
   let mockFn2 = jest.fn(() => 'new value to return instead of banana');

   Module.function = mockFn2;

   //execute code
   //calls to Module.function still return 'banana'
});
}


Я пробовал некоторые вещи, такие как добавление функции afterEach, которая вызывает mockFn.mockClear (). Я не смог переопределить оригинальную макетную функцию. Для большинства моих тестов оригинальные макеты хороши, потому что я хочу значение по умолчанию, но в некоторых моих тестах мне нужно убедиться, что код реагирует определенным образом, когда эти функции возвращают определенные значения, но я не могу изменить его из того, что я назначил в качестве первой фиктивной функции.

Редактировать - вот как это используется:

function() {
...

  if(Module.function().includes('somevalue'){
     //Do something
  }
  else {
     fetch(Module.function() + other stuff... )
     ...
}

};

Вот как это определяется:

export default class Module {

   public static function() {
      ...
   }
}

Спасибо.

1 Ответ

0 голосов
/ 29 марта 2019

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

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