问题标签 [stubbing]

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 投票
2 回答
3364 浏览

ruby-on-rails - 使用 Mocha 模拟/存根应用程序控制器方法(使用 Shoulda,Rails 3)

在为控制器编写功能测试时,我遇到了这样一个场景,我有一个 before_filter 从数据库中请求我的一个测试需要的一些信息。我正在使用 Factory_girl 生成测试数据,但我想避免在没有明确需要时访问数据库。我还想避免在这里测试我的 before_filter 方法(我计划在单独的测试中测试它)。据我了解,模拟/存根是实现此目的的方法。

我的问题是,在这种情况下模拟/存根此方法的最佳方法是什么。

我的前置过滤器方法根据在 URL 中找到的子域在数据库中查找站点,并设置要在控制器中使用的实例变量:

我的控制器使用此方法作为 before_filter:

如您所见,它依赖于@site要设置的变量(通过 before_filter)。然而,在测试期间,我想让测试假设@site已设置,并且它至少有 1 个关联页面(由 找到@site.pages)。我想load_site_from_subdomain稍后测试我的方法。

这是我的测试(使用Shouda & Mocha):

这让我的测试结果出现错误,告诉我那@site是零。

我觉得我正在以错误的方式解决这个问题。我知道只需 Factory.create 站点很容易,因此它存在于数据库中,但正如我之前所说,我想减少数据库的使用以帮助保持我的测试速度。

0 投票
4 回答
399 浏览

.net - 进入 stubbing 和 mocking

我一直在考虑学习存根和模拟,并且我知道 .Net 的几个可用库:RhinoMocks、Moq、TypeMock ......虽然我仍然不太清楚存根和模拟之间的区别,我知道它在那里,我总是可以用谷歌搜索它。

我想知道,而不是进入 TDD 或类似的东西:

  • 学习曲线值得吗?我不太确定是否了解有关期望的所有小细节或在这种情况下会得到回报的任何东西。

  • 生产收益是否比手动制作我的“虚拟实现”大得多?我猜是这样,因为动态模拟/存根一个类更快。

  • 你会推荐哪个图书馆?起订量似乎更容易。

  • 对于傻瓜来说,哪些是最好的资源(教程、书籍、视频......)并且或多或少是最新的?我不想了解一个库,当我下载最后一个版本时,意识到显示的大多数 API 不再有效。

感谢一切。

0 投票
3 回答
12916 浏览

java - Mockito 重新存根方法已经用 thenthrow 存根

我遇到了mockito的问题。我正在开发一个网络应用程序。在我的测试中,用户管理被嘲笑了。在某些情况下,我必须更改该getLoggedInUser()方法返回的用户。

问题是,我的getLoggedInUser()方法也可以抛出AuthenticationException.

因此,当我尝试从无用户切换到某个用户时,调用

抛出一个异常,因为userProvider.getLoggedInUser()它已经被存根了thenTrow()

有没有办法告诉该when方法不关心异常?

提前致谢 - 伊斯特万

0 投票
3 回答
15834 浏览

java - Mockito 中的存根默认值

如何存根一个方法,以便在给定一个我不期望的值时,它返回一个默认值?

例如:

第 2 部分:如上,但抛出异常:

在上面的示例中,最后一个存根优先,因此映射将始终返回默认值。

0 投票
1 回答
630 浏览

android - 在 Android 上实现“存根”的最佳方法是什么?

我正在创建一个将注册 Observer 并侦听事件的 Android 应用程序,我可能会使用 Mark 在上一个问题中的建议之一。

但是,我的问题是,如何在 Android 上创建一个“存根”,以便在我的应用程序观察者处触发事件?出于本示例的目的,我们假设我的应用程序正在侦听 wifi 信号强度,我需要创建将在模拟器(或设备)上运行的东西,它将模拟数据以“假装”它具有强/weak 信号,并将其中继到我的应用程序。

有什么建议么?

0 投票
1 回答
8946 浏览

ruby-on-rails - stub_chain 和 should_receive

我正在尝试测试在方法调用链中是否有一个方法获取特定参数。例如,在下面的代码中,MyModel 必须接收方法的参数 0 offset。不幸的是,下面的代码不起作用。似乎无法混合 should_receive 和 stub_chain。我怎么能解决这个问题?我正在使用 RSpec 2。

我正在尝试测试的代码:

更新

我还在 RSpec Google Group 上发布了这个问题,David(RSpec 的创建者)回答了这个问题(感谢 David):http ://groups.google.com/group/rspec/browse_thread/thread/6b8394836d2390b0?hl=en

0 投票
7 回答
179 浏览

c# - 我将如何进行单元测试?

我需要开发一个相当简单的算法,但我有点困惑如何最好地为它编写测试。

一般描述:用户需要能够删除计划。计划有与之关联的任务,这些也需要删除(只要它们尚未完成)。

伪代码作为算法的行为方式:

现在据我了解,单元测试不应该接触数据库或通常需要访问任何外部系统,所以我猜我在这里有两个选择:

1) 模拟存储库调用,并检查它们是否作为断言被调用了适当的次数

2) 为两个存储库类创建存根,手动设置它们的删除标志,然后验证适当的对象已被标记为删除。

在这两种方法中,最大的问题是:我究竟在这里测试什么?这样的测试会给我带来什么额外的价值?

对此的任何见解将不胜感激。这在技术上与任何特定的单元测试框架无关,尽管我们有 RhinoMocks 可以使用。但我更喜欢一般性的解释,这样我就可以正确地解决这个问题。

0 投票
8 回答
5911 浏览

ruby-on-rails - 在规范中存根 Paperclip S3 请求

我正在使用 Paperclip 和 S3 进行图像上传,并试图从我的测试套件中剔除对 S3 的调用。我找到了提到做的思想机器人帖子

但这给了我“错误数量的参数(2 个 4 个)”错误。我尝试将上面的参数切换到一个数组,这消除了原始错误,但给出了一个错误,提示“属性已定义:回形针夹具”。

有没有人能够得到这个工作?另外,理想情况下,我希望将本地文件系统用于开发环境。是否有捷径可寻?

0 投票
1 回答
1716 浏览

ruby - 使用 Mocha 将对象作为参数传递给存根方法

基本上我想检查作为参数传递给存根方法的对象,以便检查该对象的值。在我的情况下,我不能使用Foo.expects(:bar).with({:abc => 123}),因为我知道对象不会彼此相等。我只想比较参数的子值。

当然这是可能的,我只是在这里找不到语法或策略。

0 投票
1 回答
2668 浏览

rspec - Rspec 控制器测试中的存根控制器操作,但仍执行

我想测试是否实际调用了控制器操作而没有在某些 before_filter 中发生重定向。由于控制器操作本身可能会执行重定向,因此我想对操作进行存根以引发特定错误(SuccessfulActionError 或类似错误),然后检查该错误作为调用该方法的指示符。

所以我添加了以下内容:

以某种方式工作,正在引发异常,但该方法中的实际代码仍被执行(例如,如果我将不存在的记录的 id 发送到“显示”操作,它会引发 ActiveRecord::RecordNotFound 异常)。

这是为什么?我想完全存根动作,就好像它被实现为

我究竟做错了什么?这是错误的方法吗?

编辑:

使用

也不行。

我在这样的 before_all 过滤器中覆盖控制器以修复未从 ApplicationController 获取的 default_url_options:

这可能是罪魁祸首吗?不幸的是,当我删除它时,这些规格根本不起作用。