问题标签 [rspec-mocks]

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 回答
443 浏览

ruby-on-rails - Rspec spec_helper 配置问题:未定义的方法 `syntax=' for #(无方法错误)

我正在尝试使用 rspec 测试确认在控制器方法中调用了一个函数。为此,我遵循relishapp 文档来设置消息期望。

但是,我无法将此代码段添加到spec_helper.rb

虽然只是config.mock_with :rspec已经在文件中并且没有引起任何问题,但添加上面的代码片段并运行 rspec 会导致出现以下错误:

我该如何解决这个问题?

0 投票
1 回答
299 浏览

ruby-on-rails - FactoryGirl 在控制器和视图规范中比 Rspec-Mocks 有什么好处?

在由外而内的 Rails 开发方法中,我们从视图开始并遍历模型,在这种方法中,我们单独指定和测试每个部分,以便视图规范与控制器和模型隔离,控制器规范与视图和模型隔离, 等等。因此,在这种方法中,FacctoryGirl 可以适应,以及在指定控制器和视图时使用它比 rspec 加倍的好处是什么。我的意思是,由于 FactoryGirl 要求已实例化的模型在使用它之前必须存在,因此应该在控制器和视图之前进行测试,因此它不会是一种由外而内的方法。

0 投票
2 回答
2833 浏览

ruby-on-rails - Bundler 找不到 gem "rspec-mocks" 的兼容版本 - Bundler::VersionConflict

我尝试在托管服务器上部署。但是当我转到我的域时,我看到 phusion 乘客错误消息:

所以我这样做:

然后我得到:

所以我再做一次:

最后我明白了:

Bundler 找不到 gem "rspec-mocks" 的兼容版本:在 Gemfile 中:guard-rspec (= 2.5.0) ruby​​ 依赖于 rspec-mocks (~> 2.14.0) ruby

(捆绑器::版本冲突)

我必须从我的 Gemfile 中删除其中一个吗?

0 投票
1 回答
2665 浏览

ruby-on-rails - RSpec::Mocks::ExampleMethods 的未定义方法 instance_double

我有一个这样的测试用例:

当我运行 RSpec 时,我得到一个错误:

根据http://rubydoc.info/github/rspec/rspec-mocks/RSpec/Mocks/ExampleMethods这种方法存在。所以我尝试通过以下方式直接访问它:

然后我得到了一个非常令人惊讶的错误:

这与我上面链接的文档相反。

我错过了什么?

0 投票
3 回答
9850 浏览

ruby-on-rails - Rspec模拟,“期望”也可以将方法存根作为副作用吗?

我正在尝试理解继承应用程序中的测试,我需要一些帮助。

有很多像这样的规范组(查看规范):

...job_post作为在控制器上定义的辅助方法。(是的,他们本可以使用@instance 变量,而我正在重构它)。

现在,在我看来,使用块expect内部before是错误的。让我们暂时忘记这一点。

通常上面的测试是绿色的。
但是,如果我删除expect行,测试将失败。在这种情况下,似乎是在expect视图上存根方法。实际上,替换expectallow似乎具有完全相同的效果。

我认为正在发生的事情通常是——当与服务器一起运行时——视图将调用job_posts并且消息将落在控制器上的辅助方法上,这是预期的行为。

然而,这里expect是设置一个期望值,同时在 stub 上view使用一个固定返回值的方法。由于视图模板调用该方法,因此测试通过。

关于意外的“存根”副作用expect,我在rspec-mocks 自述文件中发现了这一点:

(...) 我们还可以设置一个消息期望,以便在未调用 find 时示例失败:

RSpec用它自己的类似 test-double 的方法替换了我们正在存根或模拟的方法。在示例结束时,RSpec 验证任何消息期望,然后恢复原始方法。

有没有人对该方法的这种特定使用有任何经验?

0 投票
1 回答
993 浏览

ruby - 由于 rspec-mocks#setup,RSpec.configure 不起作用并且示例失败

我在 3 个月前开始使用 rspec,我正在一个 sinatra 项目中使用它(使用 ruby​​ 2.1.1)...

我的规格没有错误(它们已在其他计算机上成功运行),但是在我自己运行它们时,我为每个示例都得到了这个......

===========================

我使用了这个链接(https://github.com/rspec/rspec-core/issues/754),但它对我不起作用(我的应用程序位于名为项目的文件夹中)......

我也尝试过使用 ruby​​ 2.0.0 但这是同样的问题......

我很乐意阅读有关它的任何有用的文章...谢谢

0 投票
4 回答
8240 浏览

ruby-on-rails - rspec-mocks 的双打设计仅用于一个示例

我有一个关于如何在示例之间共享 rspec-mocks 的问题。我正在用 rspec-mocks 编写一个新的 rails 应用程序3.1.3。我习惯于使用旧的 (< 2.14 并且如果当前的 rspec 使用情况,我会尝试更新我的知识。

我有一个模型方法:

这是规格:

当我自己运行一个测试时它很好,但是当我运行整个describe ".from_strava"块时它会失败并显示消息

我明白它在说什么,但肯定这是对double2 个示例中使用的 a 的适当使用。毕竟,client双精度对示例并不重要,它只是我加载预设响应的一种方式。我想我可以使用 WebMock,但这似乎非常低级,并且不能很好地转化为实际编写的代码。毕竟,每个例子我们应该只断言一件事。

我曾想过client用一个电话来代替双重

但这似乎也不是正确的方法,因为文档指出这 receive_message_chain应该是代码气味。

因此,如果我不应该使用receive_message_chain, shared clientdouble 并且还遵循标准 DRY 原则,那么我应该如何解决这个问题?

我希望对此有一些反馈。

谢谢,戴夫

0 投票
1 回答
431 浏览

rspec - 使用 RSpec-mock 在 JRuby 中模拟 Java 接口

我正在为 JRuby 中的 JDBC 编写一个简单的包装器。本质上,我想要一个包装类DBW,它接受一个连接字符串和一个可选的初始化块。

但是在我的测试中,我想使用一个测试替身作为向Driver注册的DriverManager,所以我在 RSpec 测试中完成了以下操作:

运行测试时出现以下错误:

如测试代码中所述,acceptURL 方法没有被DriverManager. 有什么我想念的想法吗?

0 投票
2 回答
1036 浏览

ruby - 使用 rspec-mocks 测试模块方法

如何使用 Rspec 3 模拟测试此模块中的配置方法?

我试过这样的事情:

看起来,它不起作用,为什么?

失败:

1) TestModule 配置应该有配置实例失败/错误:allow(obj).to receive(:config).and_return(config) TestModule 没有实现:config # ./spec/config_spec.rb:41:in `block (2水平)在'

0 投票
2 回答
117 浏览

ruby-on-rails - 什么是 RSpec 模拟?

我刚开始学习 Ruby on Rails。当我研究 RSpec 测试时,我看到了一个关于 RSpec Mocks 的推荐链接。但是我不知道 RSpec Mocks 的优点以及如何使用它。任何人都可以对此进行总结。