Nan*_*gin 8 unit-testing decorator typescript
假设有一个属性装饰器,并且一个类在其某些属性上使用该装饰器。
function foo(options?: any) {
return function (target: any, prop: string) {
// some magic
}
}
class Bar {
@foo({ opt1: true }) zoo = 123
}
Run Code Online (Sandbox Code Playgroud)
假设我已经foo在我的单元测试中涵盖了的逻辑,现在我愿意编写一个测试来确保
Bar类foo在其属性上zoo使用了带有选项的装饰器{ opt1: true }
这个测试应该怎么写?
这是个有趣的问题。
装饰器旨在直接使用,因此不能通过正常方式进行模拟。这可能是使用jest绕过模拟的合法案例。
但是,IMO,您测试的目标放错了位置。您不应该测试它已被调用的事实,如果可能{ opt1: true },您应该测试使用此类装饰器的行为。
测试它已被调用与{ opt1: true }您要测试findLCD(a: number, b: number)它以确保它已调用相同Math.abs(a)。
您应该关注行为(findLCD(a, b)为您提供正确的结果),而不是代码如何做到这一点。
意思是,如果您的装饰者@foo做了一些可衡量的事情,请对其进行测试。
例如,如果@foo写一些日志条目,想办法测试日志条目是否被写入,而不@foo是以某种方式被调用。
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |