gpt4 book ai didi

javascript - 在 Typescript 单元测试中模拟

转载 作者:可可西里 更新时间:2023-11-01 02:53:28 25 4
gpt4 key购买 nike

问题是,如果对象足够复杂(在任何强类型语言中都是如此),Typescript 中的模拟可能会变得棘手。你通常会模拟一些额外的东西只是为了编译代码,例如在 C# 中,你可以使用 AutoFixture 或类似的东西。另一方面,Javascript 是动态语言,可以只模拟测试运行所需的对象的一部分。

所以在 Typescript 单元测试中,我可以使用 any 类型声明我的依赖关系,从而轻松模拟它。您看到这种方法有什么缺点吗?

let userServiceMock: MyApp.Services.UserService = {
// lots of thing to mock
}

对比

let userServiceMock: any = {
user: {
setting: {
showAvatar: true
}
}
}

最佳答案

我在 TypeScript 中进行单元测试的经验明确表明,保留所有模拟对象的类型是值得的。当您将模拟保留为 any 类型时,重命名期间就会出现问题。 IDE 无法正确发现应该更改哪些 usersettings 参数。当然,手动编写具有完整接口(interface)的模拟对象确实很费力。

幸运的是,有两个 TypeScript 工具可以创建类型安全的模拟对象:ts-mockito (灵感来自 Java mockito )和 typemoq (灵感来自 C# Moq )。

关于javascript - 在 Typescript 单元测试中模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39792156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com