如果我们定义这样的装饰器函数:
return function IsDefined(object: any, propertyName: string) {
....
]
然后装饰一些这样的属性:
class Test {
@IsDefined() p1: String = "";
}
并在装饰器中执行此测试:
expect(object).to.equal(Test);
应该通过吗?什么是object
?
例如,通过:
const instance:any = new Test();
expect(object.constructor.name).
to.equal(instance.constructor.name);
答案 0 :(得分:1)
第一个参数始终是静态成员的类或构造函数的当前实例。因此,在这种情况下,value tag main_tag
1 tag_A ABC
-1 tag_C ABC
-1 tag_A ABC
1 tag_C ABC
将是object
类实例装饰器的调用来源。
该测试不应通过原因,因为我提到它是当前实例。您可以检查object是否实际上是Test
的实例或类似于上一个示例:
Test
或
expect(object instanceof Test).toBeTruthy();