问题标签 [ruby-mocha]

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 投票
4 回答
2826 浏览

ruby-on-rails - 模拟/存根包含在“instance.extend(DecoratorModule)”中的方法

我使用了一个包含在模型实例中的装饰器模块(通过“扩展”方法)。例如:

然后我想在测试中执行以下操作(使用 Mocha):

这是否有可能,或者您是否有其他方式来获得此功能???

0 投票
1 回答
2024 浏览

ruby - 如何在摩卡中断言模拟块

这个例子是人为的,请不要将它逐字作为我的代码。

我需要断言如下内容:

最后,我想断言:

  1. 使用适当的参数调用 Dir.chdir。
  2. ` 使用适当的参数调用

我开始...

但在那之后我不确定如何调用传递给 Dir.chdir 的块。

0 投票
2 回答
2324 浏览

ruby-on-rails - Ruby on Rails:测试对第三方 API 调用失败的最佳方法

我现在调用第三方 Web 服务作为我的应用程序的一部分。我正在使用 RestClient gem 来执行此操作。有很多工具可以做同样的事情,所以这无关紧要。

我很好奇的是有足够好的测试,没有什么太花哨的,我可以模拟我的应用程序在第三方 Web 服务因任何原因不可用时如何响应。由于网络延迟/复杂性,我超过了速率限制或超时,我只想能够获取 HTTP 状态代码之类的内容并测试我的应用程序在该事件中的作用。

使用 Test::Unit 执行此操作的最佳方法是什么?现在,对第三方服务的调用被封装在我的一个控制器中。我有一个简单的模块,其中包含一些用于远程服务不同端点的包装方法。我只想确保我的应用程序在服务可用或不可用时执行正确的操作。

是否在 Test::Unit 旁边使用了一个可以“存根”执行此操作的正确方法的附加框架?显然,我不能强制网络超时,并且为了测试而开始使用 IPtables 之类的东西是不值得的。我确信这个问题已经解决了一百万次,因为如今将 Facebook 和 Twitter 等东西集成到 Web 应用程序中非常流行。当以健壮/受控的格式访问这些 API 时,您如何测试失败?

0 投票
1 回答
3298 浏览

ruby-on-rails - 在仍然调用原始实现的同时设置方法调用的期望

似乎使用 Mocha 设置任何方法调用期望会阻止调用原始实现。

似乎涵盖了使用 rspec 调用原始方法。

有没有办法用摩卡做到这一点?或者有谁知道为什么不支持这个?

0 投票
2 回答
1203 浏览

ruby - 你如何模拟像“每个”这样的方法?

我正在尝试测试一种使用 CSV.foreach 读取 csv 文件并对其进行处理的方法。它看起来像这样:

CSV.foreach 将文件路径作为输入,读取文件并解析逗号分隔值,为文件中的每一行返回一个数组。每个数组依次传递给代码块进行处理。

我想使用 Mocha 来存根该foreach方法,这样我就可以process_csv从我的测试中控制该方法的输入,而无需任何文件 I/O mumbo-jumbo。

所以测试会是这样的

我需要一种方法将我的test_input数组变成 Mocha 可以使用的东西。我想我必须使用某种 proc 或 lambda,但我发现 procs、blocks 和 lambdas 的世界有点让人费解。

0 投票
1 回答
275 浏览

ruby - 如何在单元测试之外使用 mocha?

我正在尝试在单元测试之外使用 mocha 来模拟 Net::HTTPResponse 对象。这是一个简单的例子:

我收到此错误:

0 投票
2 回答
269 浏览

ruby - 断言没有存根的方法调用?

我想断言调用了一个特定的方法,但我不想模拟/存根该方法 - 我也想在测试中包含该代码。

例如,在 Ruby 中,类似:

有没有人有建议(或更好的方法)?我的实际代码要复杂得多,所以请不要考虑示例的简单性。

0 投票
0 回答
548 浏览

ruby-on-rails - 如何使用 RSpec 和 Mocha 模拟 ActsAsTaggableOn?

如何使用 RSpec 和 Mocha 模拟 ActsAsTaggableOn::tag ?我是 Rails 测试的新手,所以我可能会遗漏一些明显的东西......

我试过了 :

/spec/controllers/books_controller.rb

/app/controllers/books_controller

我得到:

0 投票
1 回答
7793 浏览

ruby-on-rails - 使用 mocha,有没有办法用许多参数存根?

假设我有这门课

我可以使用以下方法存根整条方法:

但是,如果我只想在 bar 方法的 param1 为真时存根,我找不到办法:

我还查看了 with 和 has_entry,它似乎只适用于单个参数。

我期待这样的一些功能。

谢谢

..................................................... . 编辑以下内容..........................

谢谢,纳什

不熟悉 rspec,所以我尝试使用 any_instance 进行单元测试,它似乎有效

0 投票
3 回答
8321 浏览

ruby-on-rails - Mocha:当有多个不同参数的调用时如何添加对方法的期望

我有一个 Rails 控制器动作要测试。在那个动作中,一个方法 User.can? 使用不同的参数多次调用。在其中一个测试用例中,我想确保调用 User.can?('withdraw') 。但我不关心 User.can 的调用?与其他参数。

我在测试中尝试了以下内容:

但测试失败,消息表明意外调用 User.can?('deposit')。如果我使用参数“存款”添加另一个期望,则测试通过。但是我想知道是否有任何方法可以让我只关注带有“withdraw”参数的调用(因为其他调用与这个测试用例无关)。