问题标签 [spy]

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 投票
0 回答
66 浏览

unit-testing - 在 Mockito 中监视时如何只检查方法调用而不执行

我正在尝试测试要验证的最终方法的调用。我不想执行那个。

如何只检查method1调用而不在被监视时执行?

谢谢你 !

0 投票
1 回答
3710 浏览

javascript - 为什么 Jasmine 在监视 $.ajax 时不重置间谍?

我试图$.ajax在 Jasmine 2.0 测试中进行监视。这是一个显示我的场景的简化示例(TypeScript):

firstTestsecond test如果我单独运行它们,也可以工作。但是,如果我如上所示运行这两个测试,我会收到以下错误消息:ajax has already been spied upon.

所以我的问题是:

  • Jasmine不应该在每次测试后自动重置间谍吗?为什么这在我的情况下不起作用?
  • 有没有另一种使用方式spyOn可以让 Jasmine 重置间谍?
  • 如何手动重置间谍?

更新:我继续试验并自己找到了一个可能的解决方案。it如果我在规范中设置了间谍,那么两个测试都运行良好。这是first test显示我的意思的代码:

尽管如此,为什么第一个版本不起作用会很有趣。为什么 Jasmine 在第一个版本中没有重置间谍,而在第二个版本中却这样做了?

0 投票
1 回答
1421 浏览

angularjs - Jasmine test for scope methods fails

I have an spec that test's if the method in scope was called (see below)

Application Code(Code to be tested):

Jasmine reports that "Expected false to be truthy.". How come ? since the method sets it to true !!

Update:

For some reason, SpyOn was mutating my object to something it was intended for. So below piece of code works good

0 投票
4 回答
34026 浏览

java - Mockito Spy - 调用构造函数之前的存根

我正在尝试监视一个对象,并且我想在构造函数调用它之前对构造函数调用的方法进行存根。
我的课看起来像这样:

不得调用 setup 方法。那么,我如何监视这个方法(和存根设置,使其什么都不做)?
它可以很好地模拟该方法,但我想进行单元测试MyClass,所以我需要其他方法。


需要对 setup 方法进行存根以使其不执行任何操作的原因:
我正在编写乐高机器人 (lejos),并且我在 setup 中放置了一些机器人需要工作的代码。但是,当我在 TinyVM(安装在机器人上的 VM)之外调用它时,java 崩溃,因为它没有正确初始化 VM(因为测试在我的 PC 上运行)。对于单元测试,设置并不重要。
我不能存根类/方法设置调用,因为其中一些是公共静态最终变量。

0 投票
1 回答
2912 浏览

angularjs - Jasmine:在不存在的窗口对象上创建间谍

我正在与 AngularJS 一起构建一个 cordova / phonegap 应用程序。在我的应用程序中,我使用了一些来自 cordova 的本地插件,例如地理定位插件。

在我的测试期间,这个插件不可用(因为 phonegap 不存在),在我的测试中$window.plugins返回。undefined当然,$window.plugins.anotherPlugin也失败了。

因此,我必须为我的测试模拟这些部分。目前,我正在这样做

但是,如果将来另一个库使用$window.plugins命名空间,而我在我的测试中覆盖它呢?这会破坏其他测试。使用上述方法,我必须在测试后进行一些清理,以确保$window.plugins设置旧值。我认为,这种方式不是很干净,我想知道是否有更好的方式来处理茉莉花。

所以我的问题是:我怎样才能$window.plugins.anotherPlugin通过用茉莉花创建虚拟函数来监视,而不影响其他测试,什么时候$window.plugins不存在?

0 投票
1 回答
49 浏览

android - 是否可以对 Android 应用进行子类化?

我想为不支持插件的现有应用程序开发一个插件(例如 Whatsapp)。在 Windows 系统上,这将非常容易,因为我可以继承和监视现有窗口消息或添加新消息,从而可以在运行时更改任何应用程序的行为。

类似的东西在Android上也可以吗?还是它的安全模型阻止了我的插件和应用程序之间的交互?

0 投票
1 回答
2528 浏览

java - 改变模拟间谍的领域

所以可以说我有一堂课

现在我正在测试这个类,我把它放到一个模拟中

问题是:realClass.justAField现在等于什么?

编辑:响应@fge 这没有失败。

那么 testClass 中的 wFile 现在是模拟的还是原来的?

0 投票
1 回答
461 浏览

javascript - 茉莉花间谍未调用

我是茉莉花间谍的新手。

这是我的测试:

就像在我的 endpointService 中一样,我有:

和我的 _doSteps 方法:

它记录'在dosteps中!在间谍抱怨没有调用 _doSteps 之前。我该怎么做呢?

0 投票
1 回答
1320 浏览

xml - XML Schema:元素属性作为唯一值?

我正在制作 XSD 模式来验证我从 java 生成的 XML 文件。它与天气有关,我想让value里面变得date独一无二。

这是测试 XML 文件:

所以这不应该在这里通过验证,因为value应该是唯一的,为什么这不起作用?

0 投票
4 回答
62514 浏览

testing - Spock测试框架中Mock / Stub / Spy之间的区别

我不明白 Spock 测试中 Mock、Stub 和 Spy 之间的区别,并且我一直在网上查看的教程没有详细解释它们。