我们正在对我们的应用运行集成测试,并遇到使用Stripe JavaScript库的问题。我们有一个包装库的组件,它在它开始令牌创建过程到它完成组件被销毁的时间之间(这反过来又使我们的其余测试失败了。)典型的“修复”是为了包装该方法在Ember.run中,它似乎没有任何影响。让我举个例子。
actions: {
update: function() {
// Starting here this.get('isDestroyed') == false
Stripe.card.createToken({
number: "xx",
cvc: "xx"
}, function() {
// Once we are here this.get('isDestroyed') == true
})
}
}
因为它早期被摧毁,所以不采取正常行动。在等待回调完成时,我们如何让Ember保持活力?
我在下面发布了一个答案,但很好奇为什么我不想这样做和/或为什么它不是官方文档的一部分。
我在下面发布的这个答案修复了测试,但实际网站本身停止工作(只是坐在那里。)所以虽然看起来很容易解决问题,但显然没有完全发挥作用。
答案 0 :(得分:1)
似乎我手动启动和停止runloop它确实有效。 But that's not what the documentation says(尽管以这种方式这样做是完全合理的。)
actions: {
update: function() {
Ember.run.begin()
Stripe.card.createToken({
number: "xx",
cvc: "xx"
}, function() {
// Perform actions
Ember.run.end()
})
}
}