问题标签 [spyon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3129 浏览

javascript - 将 Jasmine spyOn 与工厂中定义的对象的方法一起使用

在我的 Angular JS 应用程序中,我有一个 mainController,它以 userFactory 作为参数。userFactory 由一个名为 userService 的对象组成,该对象又具有一个 userDetails 对象和一些方法,包括 resetUserDetails。(见下文)

在 mainController 我有一个调用该userFactory.userService.resetUserDetails方法的 logOut 函数。我想用 jasmine 测试这个 logOut 函数,但是我遇到了一些错误。我对茉莉花很陌生,所以如果我遗漏了一些明显的东西,我深表歉意。

所以首先在我的 Jasmine 套件中,我创建了一个 MainControllerSpec 来测试我的 mainController。

在这个规范中,我注入了一个名为 userFactory 的工厂。我正在尝试resetUserDetails按如下方式监视我的方法,但是出现错误:

错误:userService.resetUserDetails()不存在。

我通过在我的 userFactory(在 userService 对象之外)创建一个名为 test 的函数来尝试这个过程,它运行良好,所以至少我知道规范中的工厂注入设置得很好。
非常感谢任何帮助。谢谢

MainControllerSpec.js

mainController 中的 logOut 函数

用户工厂

0 投票
3 回答
8740 浏览

angular - Jasmine.js 测试 - 监视 window.navigator.userAgent

我需要找到改变userAgent价值的方法。我试过spyOnwindow.navigator.userAgent。但这没有帮助。

JS

规格

我期待1111,但得到了关于我的浏览器的真实信息。

0 投票
2 回答
6119 浏览

angular - 如何在茉莉花测试中获取事件发射器的参数

我有一个单元测试如下

当大小发生变化时,myEventEmitter 会发出一个包含 billingSize 的大型 json 对象。我希望测试检查这个值是否符合预期。但看起来我不能在事件发射器上执行“mostRecentCall/calls”。有什么建议么??

注意:我不想做

因为 dataExpected 是一个大的 json 对象。我只关心一个领域。任何帮助将非常感激。

0 投票
1 回答
4897 浏览

angular - Jasmine:如何监视方法回调:method.then()

在我的 Angular 4.0.0 应用程序中,我有这个方法,在我的组件中调用。

此方法在服务中调用:

因为我正在进行单元测试,所以我通过模拟服务来隔离我的组件:我正在模拟这个方法,如下所示:

但是在执行时,似乎我的 spyMethod 没有被调用:

TypeError: this.service.myMethod(...).then 不是函数

关于问题根源的任何想法?

0 投票
2 回答
1180 浏览

javascript - spyOn 时,Angular 服务变得未定义

我有一个 Angular 1.6.6 应用程序,我正在使用 Karma 和 Jasmine 进行测试。

给定来自控制器的这段代码:

我一直在使用以下规格对其进行测试:

并且正在通过测试,但是当我取消注释 HistoryService 的 spyOn 时,HistoryService.isUndoDisabled()来自的调用$scope.isUndoDisabled返回未定义,然后测试失败,因为:

预期的 spy undoAction 未被调用。

知道发生了什么吗????好像spyOn对代码有影响??

0 投票
4 回答
20177 浏览

angular - 使用 jasmine angular2 注入私有服务的单元测试

我在尝试对角度服务进行单元测试时遇到问题。我想验证该服务是否正确调用了另一个注入其中的服务。

假设我有这个注入 ServiceInjected 的 ServiceToTest:

服务测试.service.ts

ServiceInjected.service.ts

有了这些服务,现在我编写单元测试:

我预计我的测试是肯定的,但是我收到以下错误:

预期的间谍配置已被调用。

另一方面,如果我以这种方式将注入的服务设置为公开,它就可以正常工作:

0 投票
1 回答
421 浏览

javascript - 如何通过 Jest javascript 单元测试来监视一个函数是否已被使用?

当我尝试在导入的函数上设置间谍时,我收到以下错误消息TypeError: Cannot read property '_isMockFunction' of undefined

我不明白这段代码有什么问题

导入的功能如下所示

TDD:

0 投票
0 回答
248 浏览

angular - Angular Karma Spy 不返回给定值

在我的 Angular ngOnInit 中,我有一项服务可以为我提供价值。我在测试中提供的这些服务。我在 get 函数上有一个间谍来返回我们期望的值。但是在测试运行时,返回 get 函数的值是空的。在每个之前测试:

角度分量 ngOnInit

我做错了什么?

0 投票
0 回答
107 浏览

javascript - 能够在同一方法上设置多个间谍

我们正在尝试使用 Jasmine 进行单元测试,以隔离我们需要测试的方法或组件,并查看它在各种情况下的行为方式。

我们对现有方法使用 spyOn,如上面的代码所示。我们已将其强制放入承诺链中,因为这可能会乱序执行。

关于我们如何监视已被调用两次但具有不同参数的同一方法的任何想法?

谢谢。

0 投票
6 回答
1935 浏览

angularjs - 如何对 $timeout 调用进行单元测试/模拟?

我如何在这里模拟超时调用?

我想看看 timeout 已经用正确的函数调用了。

我想要一个模拟 $timeout 的间谍函数示例。