【发布时间】:2018-12-15 09:31:33
【问题描述】:
我有一个自定义错误类,它扩展了 Javascript 中的内置错误类。我想出的问题是“super()”方法没有通过我的 Jest 单元测试来检查它是否被调用。
export class AppError extends Error {
public name: string;
public message: string;
public status?: number;
public data?: any;
constructor(message: string, status?: number, data?: any) {
super(); <-- this guy!!
this.name = 'AppError';
this.status = status || 500;
this.message = message;
this.data = data;
}
}
有什么方法可以测试吗?谢谢。
【问题讨论】:
-
你用什么来单元测试你的代码?一个想法是使用 Jasmine 中的“间谍”(我通常使用 Karma+Jasmine 进行单元测试)。
-
@RoboBear 我正在使用 Jest。
-
看起来spy可以用在super.methodA()等方法上。它不能监视自己的 super() 方法。
-
通常最好测试影响本身,而不是说“X 被调用”。
-
@loganfsmyth 实际上,最好同时测试两者,额外的断言使测试更强大,故障排除更容易。但是在这种情况下,由于类的工作方式,测试是否调用了 super() 是多余的。
标签: unit-testing ecmascript-6 jestjs super