Пересмешивание именованных импортов с помощью шутки - PullRequest
0 голосов
/ 11 мая 2019

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

Можете ли вы выполнить следующий код, чтобы пройти тестирование?

Редактировать : Чтобы быть более понятным, я хочу знать, как смоделировать импортированные функции таким образом, чтобы я мог использовать исходную реализацию в некоторых тестах и ​​макет в других.

Эти функции foo и bar могут показаться очень простыми, и небольшое изменение в реализации может сделать тесты успешными, но у меня возникает вопрос о насмешках.

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

// a.js
export const foo = () => 'foo-' + bar()
export const bar = () => 'bar'
// a.test.js
import {
  foo,
  bar
} from './a'

describe('foo', () => {
  it('should return foo-MOCKED_BAR', () => {
    expect(foo()).toBe('foo-MOCKED_BAR')
  })

  it('should have the mocked implementation of bar', () => {
    expect(bar()).toBe('MOCKED_BAR')
  })
})

describe('bar', () => {
  it('should have the original implementation of bar', () => {
    expect(bar()).toBe('bar')
  })
})

describe('foo and bar together', () => {
  it('should have the original implementation of both', () => {
    expect(foo()).toBe('foo-bar')
  })
})

Спасибо!

1 Ответ

0 голосов
/ 11 мая 2019

Я действительно не использую фреймворк, но это должно работать

//a.js
export const foo = (arg) => 'foo-' + bar(arg)
export const bar = (arg) => arg ? 'bar' : 'MOCKED_BAR'

//a.test.js
describe('foo', () => {
  it('should return foo-MOCKED_BAR', () => {
    expect(foo(0)).toBe('foo-MOCKED_BAR')
  })

  it('should have the mocked implementation of bar', () => {
    expect(bar(1)).toBe('MOCKED_BAR')
  })
})

describe('bar', () => {
  it('should have the original implementation of bar', () => {
    expect(bar(1)).toBe('bar')
  })
})

describe('foo and bar together', () => {
  it('should have the original implementation of both', () => {
    expect(foo(1)).toBe('foo-bar')
  })
})
...