Как смоделировать импорт шутливой функции из другого файла по умолчанию - PullRequest
1 голос
/ 29 марта 2019

Мой вопрос о том, как по умолчанию имитировать импорт шутливой функции из другого файла.

Что я хочу проверить, так это то, что компонент использует функцию для включения функции (Features.js)

Я издевался над этой функцией с помощью jest.fn () и пытался изменить значение с помощью mockReturnValueOnce

Похоже на ниже.

издевается / features.js

export default function isFeatureEnabled (featureName) {
  return true // want to test both true/false cases 
}

test.spec.js

jest.mock('__mocks__/features.js', () => ({
  isFeatureEnabled: jest.fn()
}))

describe('isFeatureEnabled', () => {
  it('isFeatureEnabled=[true]', () => {
    isFeatureEnabled.mockReturnValueOnce(true)
   // some tests
  })
  it('isFeatureEnabled=[false]', () => {
    isFeatureEnabled.mockReturnValueOnce(false)
   // some tests
  })
})

Когда я запускаю тест, у меня появляется сообщение об ошибке mockReturnValueOnce is not a function. Этот вопрос stackoverflow вдохновил меня на реализацию таким способом, однако я все еще не могу понять, как заставить его работать.

Ответы [ 2 ]

1 голос
/ 30 марта 2019

Ты рядом.

Вот простой рабочий пример, который демонстрирует, что вы пытаетесь сделать:


features.js

export default function isFeatureEnabled (featureName) {
  // this is the actual implementation...
  return true  // ...but for the example just return true
}

__ издеваться __ / features.js

export default jest.fn(() => true);  // default export is mock that returns true

code.js

import isFeatureEnabled from './features';

export const funcToTest = () => isFeatureEnabled() ? 'enabled' : 'not enabled';

code.test.js

import { funcToTest } from './code';
import isFeatureEnabled from './features';

jest.mock('./features');  // use the manual mock

describe('funcToTest', () => {
  it('isFeatureEnabled=[true]', () => {
    isFeatureEnabled.mockReturnValueOnce(true);
    expect(funcToTest()).toBe('enabled');  // Success!
  })
  it('isFeatureEnabled=[false]', () => {
    isFeatureEnabled.mockReturnValueOnce(false);
   expect(funcToTest()).toBe('not enabled');  // Success!
  })
})
0 голосов
/ 29 марта 2019

Я думаю, вы должны проверить результат своей работы. Импортируйте isFeatureEnabled и проверьте, что он возвращает. Я не понимаю, почему вы используете макет.

import isFeatureEnabled from './isFeatureEnabled'

describe('Testing features', () => {

    it('isFeatureEnabled should return true if "add" feature is enabled', () => {
        const feature = 'add'
        const result = isFeatureEnabled(feature)
        expect(result).toEqual(true)
      })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...