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

ruby-on-rails - NoMethodError:minitest 和 mocha 的未定义方法“模拟”

我正在为 Rails 3 开发一个 gem,在 travis-ci.org 在 Ruby 1.8.7 下运行它时遇到了一个错误:

这是失败工作的链接:https ://travis-ci.org/#!/pokonski/public_activity/jobs/2586051

在 Ruby > 1.8.7 中一切正常。

我的 .gemspec 的相关部分:

和宝石文件:

有趣的是,当使用 ruby​​-1.8.7-p370 在本地运行测试时,使用不同的缺失方法会出现错误:

失败行的更多源代码:https ://github.com/pokonski/public_activity/blob/master/test/test_common.rb#L85

有人知道发生了什么吗?

0 投票
3 回答
389 浏览

ruby - Mocha:为什么我不能存根 #caller 方法?

在简单的代码中使用Mocha以意想不到的方式打开。你能解释一下出了什么问题吗?

所以使用这个简单的类,我们可以得到最新的调用者:

但是如果我想存根caller调用,事情就会出错。

我的猜测是查看Mocha来源,但我稍后会这样做;)


  • 红宝石 1.9.3p194
  • 测试单元 2.5.0、2.4.8
  • 摩卡咖啡 0.12.6
0 投票
2 回答
6944 浏览

ruby - 使用 Mocha 提取类方法

我有一个我想用 rspec 和 Mocha 测试的方法。我的目标是存根Dir.glob,以便只返回一个文件的简单数组。该方法定义如下:

和测试:

问题是该方法upload_dir不是我想在这里测试的东西,我假设如果我取消任何调用Dir.globthenupload_dir将永远不会被调用。Dir.glob如果我在调用和调用之前放入调试器Dir.glob,那么我会看到我的一个零文件数组,所以存根肯定是有效的。但是,当测试实际调用方法Dir.glob("#{upload_dir}/*.pdf")时,它会尝试调用upload_dir.

我正在使用 Ruby 1.9.3、rspec 2.12.0 和 mocha 0.13.0。

0 投票
1 回答
5395 浏览

ruby - 如何从 Rake 中的系统命令打印到标准输出?

我有以下Rakefile

当我运行该命令rake test:api时,我不会像运行该命令那样得到很好的点输出mocha

如何在 rake 任务中实时打印命令的输出?

0 投票
1 回答
626 浏览

ruby-on-rails - 使用 Mocha 进行模拟实际上如何允许您测试函数中的逻辑?

我开始学习如何模拟事物,因为对于有 1000 多个测试的项目来说,使用 Factory Girl 并不是很实用。我不能每次测试都访问数据库,特别是如果我希望进行任何类型的自动化持续集成。

我的测试:

上述测试的方法:

但这是我在运行测试时得到的:

不应该public_url调用 invokestatus()吗?

如果不是,那么如果我不得不打电话给p.status自己,那是不是p.public_url()完全无视我写的逻辑,并严格遵循我在中定义的内容expects?这对单元测试有什么帮助?也许我不明白嘲笑的目的。


更新:

根据@Philip 的建议,我将我的测试更改为这个,消除了对任何 ActiveRecord 恶作剧的需要:

我想现在我的问题是,我如何使用一个固定装置(我已经命名localhost?)来存根一个帐户。我收到一个错误:undefined method 'full_domain' for Mocha::Expectation:但我的夹具定义如下:

我设置了固定装置,这样我就可以拥有常用模型的基础知识,以便在我的所有测试中轻松使用。每个测试的标准模型/关系(如果我是手动/与工厂女孩一起进行测试,没有嘲笑,将需要: AccountSubscription(has AccountSubscriptionPlan),,SubscriptionPlanUser属于Account),AccountProperties(has Account),然后是实际的对象我在测试on,属于anAccount和a Useron that Account,每次测试都有点多。哈哈


更新 2:

得到它的工作:

事实证明,您可以访问诸如accounts或之类的固定装置users

0 投票
1 回答
200 浏览

ruby - 为什么 mocha 没有在我的 Rails 3 集成测试中存根此方法?

我有以下内容:

然而我有一个测试失败,因为 Project.price_all 方法正在运行:

在我升级到 Capybara 2 和最新版本的 capybara-webkit 之前,这一直正常工作。

为什么该方法仍在运行?我该如何解决?

0 投票
2 回答
8303 浏览

rspec - 无法加载此类文件 -- mocha/object (LoadError)

当我运行 rspec 进行测试时,我得到了这个错误:

无法加载此类文件 -- mocha/object (LoadError) 问题出在以下行config.mock_with :mocha

这是我的 spec_helper.rb:

那么,我在这里缺少什么?

编辑

这是完整的错误:

编辑 2

这是我的 Gemfile

这是我的 Gemfile.lock

0 投票
2 回答
1201 浏览

ruby-on-rails - 尝试启动 Rails 服务器时出现 mocha 预期错误

我有一个完美运行的 rails 项目,但是我不得不重新安装几个 gem 并在 rbenv 和 rvm 之间切换。我之前正在运行 rvm,然后我切换到 rbenv,开始出现一堆异常,尝试切换回 rvm 但仍然收到相同的错误。

我倾向于相信这不是 rvm/rbenv 问题,而是我的 gem 安装方式发生了变化。

这是完整的堆栈跟踪:

我的宝石版本:

在过去的 3 天里,这件事一直困扰着我,希望有任何帮助...

0 投票
1 回答
53 浏览

ruby - 如何在测试中绕过对超级方法的调用

我有这样的基本结构

什么是推荐的测试方法CompactCar而不Automobile运行代码CarAutomobile#some_method提供子类所需的结构,因此我想始终对其进行测试,但Car's功能在其他地方进行了测试,我不想重复努力。

一种解决方案是使用class_evaloverwrite Car#some_method,但这并不理想,因为覆盖的方法在我的测试期间保持不变(除非我使用 setup/teardown 方法重新加载原始库文件......有点丑陋的解决方案)。此外,简单地将调用存根Car#some_method似乎不起作用。

是否有更清洁/更普遍接受的方式来做到这一点?

0 投票
1 回答
488 浏览

ruby - 相同方法的 Mocha 需要返回 2 个不同的值

使用 Mocha,我正在使用需要返回 2 个单独值的相同方法。无论我做什么,它只返回 2 个值中的 1 个,因此我的 rspec 测试中的 1 个总是失败。如何让存根在正确的时间返回正确的值?

编码:

我也用块这样尝试过before。仍然没有运气。