如何解决茉莉花测试方法是否仅在内部方法是Function实例的情况下才调用另一个方法
我需要使用jasmine@2.99.1测试该代码
该代码来自my-component.ts
startChatting(agent,platform) {
if (this.params.startChatting instanceof Function) {
this.params.startChatting(agent,platform,this.params.rowIndex);
}
}
我尝试测试以上代码:my-component.spec.ts
it('ensure that startChatting does not call "params.startChatting" if "params.startChatting"
is not instanceOf Function',() => {
component.params = {
startChatting: null,rowIndex: 2
}
spyOn(component.params,'startChatting');
component.startChatting('dummyId','telegram');
expect(component.params.startChatting).not.toHaveBeenCalled();
});
,但是测试失败,并显示以下消息:“错误:未调用预期的间谍startChatting。”这意味着将调用内部方法。
因此,我尝试控制台记录该内部方法(如您在测试用例开始时所看到的那样),但我发现它不是null,而是如下所示:
ƒ () { return fn.apply(this,arguments); }
我知道在调用spyOn函数之后,情况发生了变化。
所以我的问题是如何测试这种情况?而且我需要确保,如果params.startChatting不是Function的实例,则不会被调用。
预先感谢
解决方法
这种情况无法解决,因为您没有要测试的功能。但是,这可能对您有用...
let startChattingGetterInwoked = 0;
component.params = {
get startChatting() {
startChattingGetterInwoked++;
return null;
},rowIndex: 2
}
component.startChatting('dummyId','telegram');
expect(startChattingGetterInwoked).toBe(1);
// Not sure how offten it is called,but at least one should be called due to `typeof`
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。