问题标签 [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 投票
1 回答
1484 浏览

ruby-on-rails - 如何在 Rails 的超类中存根 before_filter?

我在 RSpec 中使用 RR 进行模拟和存根,并且我遇到了一种情况,我想从设置一些实例变量的控制器的超类中存根方法。我可以弄清楚如何存根方法调用,如果我调试我可以看到我的存根块被调用,但我无法让块中的实例变量传播到我正在测试的类中。

只是为了打破它:

这是基本设置,所以在我对控制器 B 的测试中,我想从 A 中删除 bogglesnap 方法以将 @instancevar 设置为我想要的东西。我只是不知道该怎么做。

我已经尝试了 RR 的 instance_of 存根,只是将控制器定义存根:

但这些似乎都不起作用,好吧,它们不起作用:)

是否有人对您应该如何存根该方法调用并设置实例变量有任何指示?我假设它与运行块的上下文有关,但我希望有人以前遇到过这样的事情。

谢谢

0 投票
3 回答
73339 浏览

java - Mockito:如何在不模拟所有参数的情况下轻松存根方法

我有一个我想存根的方法,但它有很多参数。我怎样才能避免模拟所有参数但仍然存根方法。

前任:

0 投票
2 回答
1304 浏览

ruby - mocha 和嵌套对象

对不起,如果这是一个愚蠢的问题,我是新来的嘲笑。

我可以使用 mocha 来执行以下操作:

如何模拟嵌套对象?

假设我有一个属于某个人的产品,我想获得那个人的名字。

在我的应用程序中,我可能会这样做:

如何使用模拟获得相同的结果?

0 投票
5 回答
11351 浏览

.net - Rhino Mocks 存根和模拟仅适用于接口?

Rhino Mocks 存根和模拟仅适用于接口而不适用于具体类是否正确?我花了很长时间试图让这段代码正常工作。我没想到存根的 pubSubClient 总是从类中调用 Send 方法。该方法具有一些依赖性并引发异常。

但是,当我提取接口并使用 IPubSubClient 运行相同的测试时,它似乎按预期工作。

这是否意味着我必须为我想用 Rhino 模拟/存根的每个类提取接口?或者我在技术上或概念上遗漏了什么?

更新:好的,看来我知道我错过了什么部分: Rhino Mocks 无法拦截对非虚拟方法的调用。所以,我想我要么使用接口,要么使具体类上的每个方法都是虚拟的。如果还有其他选择,请纠正我。

0 投票
1 回答
732 浏览

ruby-on-rails - 存根 ActiveRecord 结果数组

使用 Ruby 1.8.6,当被测代码对结果调用 'count' 方法时,将 finder 方法存根以返回 Array 不起作用:

这是因为 Array.count 仅在 Ruby 1.8.7 中添加。Rails 还动态添加了一个计数方法,我相信是通过 ActiveRecord::Calculations 模块。

有什么方法可以将这个结果数组转换为与 Rails finder 方法返回的特殊 Array 类型完全相同的东西?当对结果进行分页时,很简单:我可以简单地调用 [].paginate。但这不适用于正常的取景器结果。我试过[].extend(ActiveRecord::Calculations)了,但这也不起作用。

0 投票
1 回答
470 浏览

unit-testing - 使用 Rhino Mocks 设置存根方法的返回值的技术差异

下面这两种给方法一些假实现的方法之间的主要区别是什么?

我在一个测试中使用第二种方式很好,但在另一个测试中,除非我使用第一种方式,否则无法实现行为。

所以(第一个),

vs(第二个)。


编辑

问题是第二种技术在测试中返回 null,而我希望它返回一个新的 LoginUser。第一种技术通过返回一个新的 LoginUser 来按预期运行。在这两种情况下使用的所有其他测试代码都是相同的。

可能与界面中的过载有关吗?

在被测方法中导致问题的行是:

在调试模式下,identity.Name 永远不会为空,并且始终是“dummyName”

0 投票
2 回答
2831 浏览

ruby-on-rails - 控制器和存根上的 RSpec

我对使用 rspec 很陌生,并且正在尝试为我的控制器编写测试。我有这个控制器(我正在使用 mocha 进行存根):

我试图用这样的东西来测试这个动作:

“应该分配卡组”测试通过,但我无法弄清楚如何正确地@card = @cardset.cards.find_by_id(params[:id])为“应该分配卡”测试存根这条线。测试此操作的最佳方法是什么,或者如果我在正确的轨道上,我将如何正确地存根我的模型调用?

0 投票
1 回答
998 浏览

ruby-on-rails - 对 find 的期望不起作用,但对 find_by_id 的期望是

我有这个控制器代码:

而这个 RSpec 测试代码(用 Mocha 模拟):

此测试失败:

如果我将期望更改为:

那么测试通过了,为什么这个用find_by_id会通过而找不到呢?

0 投票
2 回答
1202 浏览

ruby-on-rails - 在哪里/测试什么?模拟,存根,功能,单元......(在 Ruby/Rails 中)?

我正在尝试测试一个相当大的 Rails 应用程序,我可能一直都应该这样做,但从来没有完全适应过。现在我正在进行功能测试以查看是否成功创建了用户。基本上,我想测试一些东西:

  • 用户是否被保存(即,如果数据库中有新记录)
  • 他的信息(姓名、电子邮件等)是否正确
  • before_create 是否有几个字段已自动添加到数据库中
  • 是否发送了电子邮件
  • 电子邮件文本是否合适(即替代电子邮件模板中的用户名和激活链接)

据我了解,单元测试旨在测试模型,功能测试应该测试控制器。我上面提到的几个测试应该是单元测试,正如我所看到的 - 具体来说,我认为我可以确保输入正确映射到数据库字段,并且 before_create 过滤器在使用用户模型的单元测试中工作。

其他人似乎要求进行功能测试——是否发送了电子邮件(可能还有它的文本——尽管这可能属于 UserEmail 测试?)以及是否有新记录。

这是关于模拟/存根的问题。在用户控制器功能测试中,我应该确保使用适当的参数调用 user.save,还是应该测试数据库是否获得新记录?前者似乎需要一个存根,并假设,由于 Rails 已经过很好的测试,如果在用户模型上调用 .save,对象将被成功保存。但后者(例如,调用 assert_difference)感觉更彻底。选择哪个?

抱歉,如果这个问题涉及太多了——我知道这是一个很大的话题,但我希望理解这样一个特定的(如果很长)示例将在总体上澄清很多关于测试的内容。

谢谢!

0 投票
1 回答
184 浏览

visual-studio-2005 - VS2005 选项生成方法存根不起作用

好的,我安装了 linq 预览版(2006 年 5 月),它似乎把我搞砸了。现在 VS2005 中最重要的功能之一不再起作用(选项生成方法存根(Shift+Alt+F10))。我以前每次启动项目时都会收到此消息(“这是不受支持的 Microsoft Visual C# 3.0 / Microsoft Visual Basic 9.0 版本。因此,许多功能可能无法按预期工作。”)。我卸载了它,该功能仍然无法正常工作,但错误消息现在消失了。如果您在 Visual Studio 代码编辑器中键入以下简单代码时不知道我在说什么:“string myString = GetString();” 如果不首先声明 GetString(),您将在 GetString() 下获得一个智能标记,当您选择它时,您会看到一个下拉菜单,询问您是否要自动生成此方法存根。

有没有办法重新启用它?