在 Angular 单元测试中模拟第三方库 (Razorpay)?

Mock Third party library (Razorpay) in Angular Unit tests?

我正在尝试在我的组件之一中测试一个函数,该组件由以下两行组成:

this.rzp1 = new Razorpay(orderDetails);
this.rzp1.open();

我想了解如何在我的测试用例中为此功能模拟 Razorpay。

这就是我在组件中声明 Razorpay 的方式:

export declare var Razorpay: any;

我已经尝试过各种方法,例如:

var stub = sinon.createStubInstance(MyConstructor)

任何线索都会有所帮助。

为什么不使用 jasmine 的内置间谍工具而不是依赖另一个库 (sinon)?

在你的每个块之前,你可以做这样的事情:

beforeEach(() => {
  jasmine.spyOnAllFunctions(Razorypay.prototype);
  Razorypay.prototype.open.and.returnValue('foo');
});

您可以找到有关 spyOnAllFuntions in the documentation 的更多信息。