使用Karma-Jasmine在Angular中测试带有承诺的服务

时间:2016-08-23 14:49:36

标签: javascript angularjs jasmine karma-runner karma-jasmine

我开始用Karma和Jasmine测试Angularjs中的服务。 我不知道$ q是如何工作的,我从来没有使用它,无论如何我不知道这里是否有必要。 我的问题是我有一个服务,它有一个函数调用服务中的另一个函数(带有一个promise):

这是调用sendMetrics(具有承诺)的函数

enter image description here

这是我的测试,我尝试使用$ digest使用$ q但是我得到一个关于cookie的错误(我已经搜索了它,这可能是因为我的角度 - 茉莉花版本)。 我也试过茉莉花间谍,但我不想再建立所有的服务。

我只想解决检查测试值是否为2而不是1的承诺。 enter image description here

这是有希望的功能。 enter image description here

也许这个问题是重复的,但我需要一个不知道如何使用$ q的人的答案,如果我需要使用它。到现在为止,我还没有找到任何帮助。

2 个答案:

答案 0 :(得分:0)

我认为你必须直接在sendMetrics中返回promise,然后在sendSearchMetrics中处理它。现在,你没有从sendMetrics中的promise中返回一个promise,但是你试图像使用Promise那样使用它。

答案 1 :(得分:0)

最后我明白了:

只需在beforeEach中添加httpBackend,然后使用$ httpBackend.expect(...)

之后调用你的promise函数并使用$ httpBackend.flush(),你会得到它。

enter image description here enter image description here

相关问题