问题标签 [rspec-rails]

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 投票
3 回答
2701 浏览

ruby-on-rails - 如何测试rails模型的after_initialize回调?

我正在使用 FactoryGirl 和 Rspec 进行测试。如果模型为 nil,则模型在 init 之后设置一个外键。因此它使用另一个关联的数据。但是我该如何测试呢?通常我会使用工厂来创建这个对象,并为“self.user.main_address.country_id”使用 stub_chain。但是随着这个对象的创建,初始化之后会被调用。我没有机会打断它。

任何的想法?

0 投票
2 回答
132 浏览

ruby-on-rails - Railstutorial.org 验证存在测试

我一直在阅读railstutorial.org上的教程,但我对作者在 6.2.1 验证存在部分的代码感到有些困惑。

在用户模型中,教程添加了validates :name, :presence => true. 很简单。

当作者选择编写 rspec 测试时,他做了一些我认为有点奇怪的事情。

为什么要麻烦将一个空白字符串合并到@attr何时可以摆脱 :each 块语句并简单地编写:

我知道作者也使用该@attr变量来验证电子邮件地址的存在,这是他使用块语句的原因之一——对我来说,遵循第二个块引用的结构更有意义。不过,我有一种感觉,我在这里缺少一些东西。

@attr我想到的另一种解释是,当需要输入很多键时,它有助于使用该结构,而不是仅使用名称和电子邮件的这种相当简单的情况。

有人有意见吗?

0 投票
3 回答
24520 浏览

ruby-on-rails-3 - 如何使用 RSpec 在 Rails 中测试:包含验证

我的 ActiveRecord 中有以下验证。

我正在使用以下内容来测试我的模型验证。

是否有更清洁和更彻底的测试方式?我目前正在使用 RSpec2 和 shoulda 匹配器。

编辑

经过一番环顾后,我才发现,这可能是一种“好的”测试方式,应该不为此提供任何东西,任何需要它的人都可以为它编写自己的自定义匹配器。(并且可能将其贡献回项目) . 一些可能有趣的讨论链接:

  • 指向上述内容的链接。链接 1 ,链接 2

  • should_ensure_value_in_range这个接近可以使用的,但只接受范围而不是值列表。自定义匹配器可以基于此。

0 投票
1 回答
898 浏览

ruby-on-rails-3 - 我将如何使用 Rspec 测试此控制器操作

我应该如何指定这个

我目前的规格

规格结果

路线

0 投票
1 回答
329 浏览

ruby - rspec / rake 问题 - Rake::DSL 全局方法正在以某种方式破坏我的模型

我正在升级到 3.1,但遇到了麻烦。

我有一个模型(使用 Mongoid),显然它的“链接”方法被 Rake 覆盖。我收到这条消息:

因为该方法正在解析,所以我没有堆栈跟踪或任何东西。这发生在我的 rspecs 中,但问题不会发生在控制台中。

Gemfile 如下。

即使您不知道答案,如果您对我在这里如何处理调试过程有任何建议,那就太好了。

-杰夫

0 投票
2 回答
12678 浏览

ruby-on-rails - 使用 Rspec 测试 Rails 3.1 可安装引擎

我开始制作 Rails 3.1 引擎,并且很难使用 rspec 对其进行测试。

首先,如果我运行rails g integration_test whatever它,它会在测试/集成而不是规范/请求中创建一个常规集成测试(安装了 rspec-rails gem,并且需要作为 gemspec 文件中的开发依赖项)

此外,当我运行规范测试时,我收到一条错误消息,指出与我正在测试的模型对应的表尚未创建。我尝试从虚拟应用程序内部rake engine_name:install:migrations运行rake db:migrate,但出现“表已存在”错误。

一切似乎都断开了,我觉得我在这里缺少一些东西来使 rspec gem 无缝工作,就像它通常与完整的 rails 应用程序一样。

我遵循了这里http://rubyx.com/2011/03/01/start-your-engines的所有更改,我可以通过控制台启动虚拟应用程序来手动测试引擎,如下所示http://railscasts。 com/episodes/277-mountable-engines

有没有办法让 rspec 成为测试 rails 3.1 引擎的默认值?

0 投票
1 回答
1789 浏览

ruby-on-rails - 使用 RSpec 测试嵌套资源

我正在尝试为 Rails 中的嵌套资源创建测试。相关路由定义为:

使用 RSpec 和 factory_girl,我正在尝试使用例如测试开始

这些请求总是导致

对于我的一生,我找不到使用 RSpec 指定到嵌套资源的路由的方法。我在这里做一些根本错误的事情吗?

更新: rake 路线的相关部分是:

0 投票
0 回答
459 浏览

ruby-on-rails - Authlogic 和 RSpec 的问题

我正在使用 Authlogic gem 编写一个简单的调查应用程序。当我使用内置测试工具的 rails 进行测试时,一切正常,但现在使用 Rspec 我收到以下错误:当它尝试运行命令时出现此错误require "authlogic/testcase" from spec_helper.rb

它试图从 activesupport/dependencies 而不是 authlogic 获取 authlogic/testcase。请任何人都可以建议我哪里出错了。版本:ruby -1.9.2 rails - 3.0.10 authlogic - 3.0.3 rspec -2.6.0

提前致谢

0 投票
1 回答
423 浏览

rspec - 升级到 Rails 3.1 后,许多使用 test_sign_in 的 rpsec 测试失败,可能是 cookie 问题?

我已经升级到 Rails 3.1,一切似乎都运行良好。但是测试(RSpec)无论如何都会失败,例如以下测试:

这适用于 Rails 3.0.8,但现在测试失败。测试日志说:

[1m[35mSQL (0.2ms)[0m INSERT INTO users( admin, created_at, email, encrypted_password, name, salt, updated_at) 值 (1, '2011-09-21 10:30:30', 'admin@example.it', '68f8a34e0243a642662fe2b6ea8ed7c714d042750a66ce54'2f2df88 8 'ca管理员名称”、“6df34c304d79437d495e60d2d34e1028489731afa96690efbc25c714224edb1f”、“2011-09-21 10:30:30”)

由 CitiesController#show 处理为 HTML [1m[35mUser Load (0.2ms)[0m SELECT users.* FROM usersWHERE users. id是空限 1

[1m[36mCity Load (0.2ms)[0m [1mSELECT cities.* FROM citiesWHERE cities. id= 942 限制 1[0m

[1m[35mCity Load (0.2ms)[0m SELECT cities.* FROM citiesWHERE cities. id= 942 限制 1

[1m[36mCity Load (0.2ms)[0m [1mSELECT cities.* FROM citiesWHERE cities. id= 942 限制 1[0m

[1m[36mUser Load (0.2ms)[0m [1mSELECT users.* FROM usersWHERE users. idIS NULL LIMIT 1[0m

因此,似乎没有用户 ID(NULL),但之前已正确创建了管理员。这可能是cookie问题吗?

我的 Gemfile 中的测试组是:

我的 test.rb 是

这是我的 spec_helper:

感谢您的建议/回答!

0 投票
2 回答
3831 浏览

ruby-on-rails - rspec 模拟“未定义的方法 `stub_model' for #(NoMethodError)"

我正在使用 Rails 3.1,我想在我的规范中添加一些存根和模拟,但我得到一个 NoMethodError:

这是我的 GemFile 的摘录:

我跑了 bundle install 和 rails g rspec:install

这是尝试创建 stub_model 的代码

这是spec_helper.rb:

我正在调用“rspec ./spec”和“bundle exec rspec ./spec”(两者都试过,没有区别)

我所做的一切似乎都是教科书(事实上,我正在遵循 The Rails 3 Way)。

我错过了什么?