最终,我要测试的功能在节点或Web中使用时具有相同的功能。但是在内部,该功能是以不同的方式为节点和Web编写的,因此我需要对它们进行测试。因为功能是相同的,所以我不想编写两次相同的测试。考虑一下这一点(让我们假设函数的内部是不同的):
// 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)
})
因此测试是相同的,但是它在不同的环境中运行并从不同的位置导入。是否可以编写一次测试并测试两个环境?
答案 0 :(得分:0)
根据我对这个问题的评论进行回答。
// 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)