gpt4 book ai didi

typescript - 如何在 typescript 中测试装饰器的使用?

转载 作者:行者123 更新时间:2023-12-03 14:10:30 27 4
gpt4 key购买 nike

假设有一个属性装饰器,并且一个类在其某些属性上使用该装饰器。

function foo(options?: any) {
return function (target: any, prop: string) {
// some magic
}
}

class Bar {
@foo({ opt1: true }) zoo = 123
}

假设我已经覆盖了 foo的逻辑在我的单元测试中,现在我愿意编写一个测试确保

Bar类已使用 foo其属性(property)的装饰者 zoo带选项 { opt1: true }

这个测试应该怎么写?

附言
我正在使用 jest连同 ts-jest并在必要时向任何其他测试框架开放。

最佳答案

这是个有趣的问题。

装饰器旨在直接使用,因此不能通过正常方式进行模拟。
这可能是使用 jest 的合法案例绕过模拟。

但是,IMO,您测试的目标放错了位置。
你不应该测试它被 { opt1: true } 调用的事实。 ,您应该测试 行为 如果可能的话,使用这样的装饰器。

测试它已被调用 { opt1: true }和你想测试你的 findLCD(a: number, b: number) 一样以确保它已调用 Math.abs(a) .

你应该关注行为(findLCD(a, b) 给你正确的结果),而不是代码是如何做到的。

意思是,如果你的装饰者 @foo做一些可衡量的事情,而不是针对它进行测试。

例如,如果 @foo写一些日志条目,想办法测试日志条目是否写入,而不是@foo以某种方式被调用。

关于typescript - 如何在 typescript 中测试装饰器的使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52752285/

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