我正在为我的Javascript应用程序编写Jasmine测试。一个主要的时间接收器一直在测试我的代码,这取决于StripeCheckout。 Stripe不希望您离线使用它。我意识到我应该嘲笑这项服务,但这在Jasmine中并不容易。
我怎样才能嘲笑"定制" (而不是"简单")使用StripeCheckout?
我尝试使用spies,就像这样,
var StripeCheckout = jasmine.createSpyObj('StripeCheckout', ['configure']);
但我认为创建的对象需要附加到全局对象(窗口)。
所以,我可以add an object to the global object。这工作, 但感觉很蹩脚。
另一个选择可能是告诉 Karma加载 网页上的页面。这对我有用,但似乎很蹩脚 网络测试请求。
答案 0 :(得分:1)
我不确定你是否已经想到这一点但是一个简单的方法就是为StripeCheckout创建一个简单的模拟实现。这样的事情应该有效。
beforeEach(function() {
module(function($provide) {
$provide.factory('StripeCheckout', function() {
//your mocked custom implementation goes here
configure: function() {
//do something
}
}
}
inject(function($injector) {
StripeCheckoutMock = $injector.get('StripeCheckout');
}
)
这样您就不会发出请求来运行测试。测试将使用您已设置的模拟服务。