问题标签 [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.
javascript - 使用带有 $httpBackend 的 spyon 的 Jasmine 测试不起作用
我正在尝试使用 spyon 在使用 $http 的方法上对一些 javascript 编写茉莉花测试。我已经使用 $httpBackend 模拟了这一点,不幸的是,间谍似乎没有意识到该方法确实被称为 post $http useage。我可以看到它在调试中被调用,所以不确定为什么它报告它没有被调用。我怀疑我的示波器使用有问题?或 $httpBackend.flush\verify 的顺序?:
被测代码
测试设置
工作测试:
不起作用的测试(但应该。返回 count-0 但被调用)
angularjs - 如何窥探 Angular 提供者工厂方法?
在 Jasmine 中,您可以 spyOn(object, 'function')。我正在尝试监视一个提供程序,该提供程序用作“提供程序()”。如何窥探它?
提供者如下所示:
在控制器中,它将像这样使用:
对于 object.method(),我们可以 spyOn(object, 'method')。提供者()呢?
我用谷歌搜索,找不到任何有用的东西。我尝试了 spyOn(provider),但出现错误说“undefined() 方法不存在”。
我什至试图嘲笑提供者,但没有成功。(http://www.sitepoint.com/mocking-dependencies-angularjs-tests/)
unit-testing - 监视本地函数 Angular 服务
我有一个使用本地函数的 Angular 服务并执行以下工作:
现在我想用 jasmine 测试我的服务,并且我想测试是否调用了 localService。像这样的东西:
我该怎么做,请帮忙。
javascript - 使用 Jasmine 测试函数内部的函数
我有一个函数,里面有一个函数我需要能够测试内部函数是否被调用我试过寻找 spyOn 的例子,但没有找到任何东西我可以使用我试图测试的代码就像
我希望我能做的测试是 InnerFunc 已被调用 任何帮助都会非常受欢迎
javascript - spyOn:预期是间谍,但得到了功能
我正在使用 Jasmine 框架创建一些 Javascript 测试。我正在尝试使用该spyOn()
方法来确保已调用特定函数。这是我的代码
但我得到一个
期待一个间谍,但得到了功能
错误。我试图删除该spyOn(text, "match");
行,它给出了同样的错误,似乎该功能spyOn()
不起作用是应该的。任何想法?
javascript - 为什么 spyOn 在 Jasmine 中“停止所有函数的执行”(要求澄清 Jasmine 2.2 间谍文档)
在 Jasmine 2.2文档中,我无法理解演示 Spies 基本用法的最后一个规范。
在beforeEach()
我们设置的部分bar = null
,然后我们监视foo.setBar
,然后我们调用foo.setBar
了两次。我不明白为什么bar === null
在最后一个规范中。不应该是bar === 456
在间谍被拆除之前的规范吗?
这是示例:
我一定是误解了 beforeEach 是如何建立和拆除变量范围的,或者可能有一个步骤describe
可以重置部分中的变量?或者他们从来没有真正接触过,因为我们只使用了 spy 功能而不是真正的功能?
如果您能解释一下bar
这个规范套装中的变量到底发生了什么,那将非常有帮助,这样我就可以理解为什么它的值在上一个规范中仍然为空。
谢谢!
angularjs - Angularjs:使用 spyOn 模拟 location.path() 进行单元测试
我已经阅读了这篇文章(和其他文章),但我无法让这个简单的单元测试工作。我正在使用 Jasmine 的第 2 版。我的工厂很简单:
我的单元测试也很简单:
这没有通过测试(我得到错误期望 false 是“家”)。
我做错了什么?有没有办法验证 spyOn 已被调用(仅一次)?
angularjs - 使用 Jasmine 在 angularJs 中进行单元测试:模拟无限递归函数
我正在尝试Jasmine
使用具有无限递归函数的控制器进行单元测试,我在创建控制器时调用该函数,如下所示:
但是我不能像下面的代码那样注入这个控制器进行单元测试,否则我会收到这个错误:
我没有看到任何其他模拟该函数的方法,但如果我在控制器注入之前定义它,我会收到一个错误(updateInfo() method does not exis
t),因为控制器尚未注入。
我尝试像这样用 spyOn 模拟我的函数 updateInfo():
我缺少一些基本的东西(我是茉莉花的新手)?我能做什么?
javascript - 仅在传递特定方法时才使用 jasmine / spyOn 模拟方法
是否可以Jasmine
.spyOn()
仅在某个参数为某个值的情况下使用 , 来模拟方法?基本上,假设我有一个GetUser
方法,我想模拟它,如果它通过username = 'test'
,它将发送一个测试用户,否则为 null。一些测试假代码将是:
这相当于 C# / Moq 为:
我知道这可以通过使用自定义编码来完成and.callFake
,但这似乎很麻烦。实际有效的测试代码是:
javascript - 如何监视 node-jasmine 中的类方法?
我有一个模块用户 - 像这样:
使用类方法的函数:
我有我的茉莉花测试-
本质上,我想删除用户类方法findByUsername
并用我自己的结果伪造回调,即 nul 错误和用户(好像找到成功一样)。
我在我的应用程序中对许多“类”方法进行了 Spy,并且没有这个问题。这让我有点莫名其妙。该错误仅在我添加.and.callThrough
或添加.and.callFake
到间谍时显示。当我删除它的那一刻,测试只是超时...这是有道理的,因为间谍工作并且不调用异步瀑布继续所需的回调。
我得到的错误是 -