【发布时间】:2018-06-05 10:47:13
【问题描述】:
我有一个使用 Authorize.nets Accept.js SDK 完成付款的角度组件。除非用户在付款屏幕上,否则我不想加载 Accept.js 脚本,因此我通过在组件中调用 onInit 的方法将脚本添加到页面。
some.component.ts
ngOnInit {
this.addAcceptJsScript();
}
private addAcceptJsScript(): void {
const element = document.createElement('script');
element.src = environment.acceptJsUrl;
element.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(element);
}
some.service.ts
declare var Accept: any;
@Injectable()
export class SomeService {
private sendPaymentToAuthNet(paymentPayload): void {
Accept.dispatchData(paymentPayload, this.handleAuthNetResponse);
}
}
这对用户来说很好用,因为脚本在 DOM 中加载并且在组件调用使用 Accept API 的服务时可用
但是我在使用 API 的服务中的单元测试没有任何参考 Accept 是什么所以当它尝试测试我调用 Accept.dispatchData(...) 的代码行时,测试错误说 '参考错误:未定义接受".
我尝试了各种模拟 Accept 的方法,但没有一种方法可用于测试。如何将我的模拟 Accept 注入到服务中,以便在代码尝试使用它时声明它?
【问题讨论】:
标签: angular jasmine karma-jasmine authorize.net accept.js