【发布时间】:2019-09-12 00:43:38
【问题描述】:
最终我想测试的功能在 node 或 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)
})
所以测试是相同的,但是它是在不同的环境中运行并从不同的位置导入的。是否可以编写一次测试并同时测试两个环境?
【问题讨论】:
-
如果您使用的是monorepo,您可以创建一个通用文件测试,其中可以根据您的环境注入函数
add。您可以将测试包装在一个函数中,该函数具有您想要测试的参数函数。 -
你能告诉我一个例子如何基于我的add函数来实现它吗?
标签: node.js typescript jestjs