lea*_*32b 6 variables unit-testing environment-variables jestjs vitest
我在类中有一个方法,仅在 时执行其操作NODE_ENV === 'test'。
env这是我将其设置为任何内容以测试失败场景的测试:
it('returns Left on clearDatabase when not in test environment', async () => {
const { sut } = await makeSut()
process.env.NODE_ENV = 'any_environment'
const result = await sut.clearDatabase()
process.env.NODE_ENV = 'test'
expect(result.isLeft()).toBe(true)
})
Run Code Online (Sandbox Code Playgroud)
方法如下:
async clearDatabase (): Promise<Either<Error, void>> {
if (process.env.NODE_ENV !== 'test') {
return left(new Error('Clear database is allowed only in test environment'))
}
try {
const { database } = this.props.dataSource
await this.mongoClient.db(database).dropDatabase()
return right()
} catch (error) {
return left(error)
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当该方法进行验证时, in 中的值NODE_ENV根本没有改变,它有其初始值(test)。如果我记录该值,设置它后,在测试文件中它就在那里,只有对象看不到此更改。开玩笑地说,它工作得很好。我如何在 vitest 中正确设置/模拟它?
在这里您可以找到带有示例场景的 StackBlitz:https://stackblitz.com/edit/node-lr72gz ?file=test/example.unit.test.ts&view=editor
| 归档时间: |
|
| 查看次数: |
6072 次 |
| 最近记录: |