Запускать одинаковые тесты в другой среде в Jest - PullRequest
0 голосов
/ 22 апреля 2019

В конечном счете, функция, которую я хочу протестировать, имеет те же функции, когда используется в узле или в сети. Однако внутренне функция написана по-разному для узла и сети, поэтому мне нужно проверить оба из них. Поскольку функциональность идентична, я не хочу писать одни и те же тесты дважды. Учтите это (допустим, что внутренности функции разные):

// mylib/node/index.ts
export function add(a: number, b: number) {
  return a+b
}
// mylib/web/index.ts
export function add(a: number, b: number) {
  return a+b
}

Чтобы проверить это, я делаю:

// nodeAdd.test.ts
/**
 * @jest-environment node
 */
import { add } from './mylib/node'

test('addition', () => {
  expect(add(1, 2)).toEqual(3)
})
// webAdd.test.ts
/**
 * @jest-environment jsdom
 */
import { add } from './mylib/web'

test('addition', () => {
  expect(add(1, 2)).toEqual(3)
})

Таким образом, тесты идентичны, однако они проводятся в другой среде и импортируются из другого места. Можно ли написать тест один раз и проверить оба envs?

1 Ответ

0 голосов
/ 23 апреля 2019

Ответ основан на моем комментарии к вопросу.

// mylib/common/index.ts
export const commonAddTest = (add: (a: number, b: number) => number) => {
  test('addition', () => {
    expect(add(1, 2)).toEqual(3)
  })
}
// nodeAdd.test.ts
/**
 * @jest-environment node
 */
import { commonAddTest } from './mylib/common'
import { add } from './mylib/node'

commonAddTest(add)
// webAdd.test.ts
/**
 * @jest-environment jsdom
 */
import { commonAddTest } from './mylib/common'
import { add } from './mylib/web'

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