【问题标题】:Unit test for private method in angular2 with service injection使用服务注入对angular2中的私有方法进行单元测试
【发布时间】:2017-07-23 18:21:16
【问题描述】:
我有一个私有方法,我在其中调用服务中定义的方法来获取一些数据。该服务是一个类
Angular2 中的一些代码
private _data: DataService;
private _result: any;
private _getData() {
this._data.fetchingDetails('userID', (res) => {
this._result = res;
});
}
如何在 Jasmine 中测试这段代码
【问题讨论】:
标签:
angular
unit-testing
typescript
jasmine
【解决方案1】:
取决于您是否想做一些黑客攻击来绕过它是一种私有方法的事实,请查看 Makoto 的评论。
但通常你会通过测试使用私有方法的公共方法来测试它,它必须在你的类的某个地方被调用。例如
export class Example 1 {
constructor() {}
public foo() {
this.bar()
}
private bar() {
... do awesome stuff ...
}
}
在这里,您将测试 foo() 类是否具有预期的行为,包括 bar() 中的行为。
在您的示例中,如果您想验证 data.fetDetails 是否被调用,则对其进行监视并测试您与 foo 的等效性。