问题标签 [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 回答
1526 浏览

ruby-on-rails - 使用 Rspec、NiftyAuthentication 进行测试

我正在使用 Ryan Bates nifty:authentication,并开始使用 Rspec 进行测试。与此斗争了数周,但仍然不明白发生了什么。

我的控制器只是调用

在 lib/controller_authentication 中定义

该应用程序按预期工作,但测试每次都失败。无论我尝试什么,我都会得到redirect_to login_url, :alert => "You must first ...log in"页面。

我尝试过的事情:

我认为这意味着我错过了整个理论。我怎样才能使我的登录工作?


我按照 Punit 的建议进行了尝试:[pre]

@account.inspect 显示得很好,但我也得到了

感谢您提供任何详细的解释,因为我已经搜索了高低以了解发生了什么。

0 投票
4 回答
4356 浏览

ruby-on-rails - Factory Girl / Capybara 在测试中从数据库中删除记录?

与 RSpec 和 Capybara 一起工作,我得到了一个有趣的测试失败模式,它会随着测试用例中的一些细微的行重新排列而消失......这应该不重要。

我正在开发自己的身份验证系统。它目前正在运行,我可以使用浏览器登录/退出,并且会话可以正常工作等等。但是,尝试测试它失败了。发生了一些我不太明白的事情,这似乎取决于(看似)不相关的调用的顺序。

照原样,该测试失败......登录失败。在将“调试器”调用插入规范和控制器后,我可以看到原因:就控制器而言,用户没有被插入数据库:

在 ApplicationController 中编辑添加

在控制台中,在上述断点处:

但是,如果我在测试中重新排列几行,将“二”行放在“一”行上方:

我在控制台中得到这个(与上面相同的断点):

为简洁起见,我省略了用户对象内容的完整转储,但我可以向您保证测试按预期完成。

这种通过换行来让测试通过的行为并不符合我对这些命令应该如何处理的想法,并且已证明对我在其他领域的测试非常不利。

关于这里发生了什么的任何提示?

我已经在 google 和 SO 上搜索了提出这个问题的想法,并且不乏关于 RSpec/Capybara 和 Sessions 的 SO 问题。不过,似乎没有什么合适的。

感谢您的关注。

更新

我在测试中添加了一个断点(就在访问调用之前)和一些调试,然后返回:

很明显,访问过程中的某些事情是告诉 Factory Girl 用户对象已完成,因此她将其删除?

编辑仔细检查 test.log 后,没有发出任何删除。所以我或多或少地回到了第一方。

0 投票
2 回答
6294 浏览

ruby-on-rails-3 - 'redirect_to root_path' 在 RSpec 集成测试中不显示为重定向

我有一个带有以下路线的 Rails 应用程序

我的 ApplicationController 包含一个 default_url_options() ,它会自动设置语言环境选项

我的 SessionsController 包含以下内容

所以还没有任何逻辑,只是一个重定向。当我在浏览器中运行应用程序时,转到登录页面,提交表单(发布到 /en/sessions),然后它按预期工作:我被重定向到 /en

然而,集成测试无法识别重定向

测试失败并显示消息

因此,即使应用程序正确重定向,RSpec 也不会将响应视为重定向。

如果我只是为了好玩,将 create 的实现更改为

然后我收到错误消息

这当然是预期的错误消息,因为该函数现在重定向到错误的 url。但是为什么 new_user_path 会导致 RSpec 视为重定向的重定向,而 root_path 会导致 RSpec 无法识别为重定向的重定向?

更新

根据评论,我修改了测试以验证状态码

它导致错误

0 投票
3 回答
12477 浏览

ruby-on-rails-3 - # 未定义的方法`sign_in'尝试使用 Devise 设置 RSpec 时出错

我有一个spec/controllers/add_to_carts_spec.rb

/spec/support/spec_helper.rb

...这也加载/spec/support/devise.rb

Guard 在后台运行并不断抛出这个:

在过去的几个小时里,我尝试了各种配置调整和不同的语法,但似乎没有任何改变。有任何想法吗?

(编辑以反映较新的错误)

0 投票
1 回答
520 浏览

xml - 如何使用 rspec2 和 ruby​​ on rails 3 测试控制器的正确 XML 输出?

在 rspec1 中有一个匹配器 have_tag,它不再在 rspec 2 中。

如何简单地检查 RoR 控制器的 XML 输出?XPath 会很棒...

0 投票
1 回答
325 浏览

ruby-on-rails - Rspec Ruby on Rails 控制器问题

我目前正在使用 ruby​​ 1.9.2 和 rails 3,并且正在进行 rspec 测试。基本上,我有一个由应用程序控制器中的前置过滤器调用的函数,这样每次在我的站点上的任何位置执行控制器操作时,它显然都会运行。出于测试目的,我正在为不同的控制器编写测试,但我的操作并没有触发我之前的过滤器函数调用。有没有办法专门从 rspec 测试中的特定控制器调用函数?我不能在线发布代码,所以没有用要求它:P。
谢谢

0 投票
1 回答
158 浏览

ruby-on-rails - 使用 rspec-rails 运行数据库

我正在尝试使用 RSpec 测试控制器,但由于控制器中的功能需要数据库而遇到问题。

控制器中的代码行如下所示:

其中 Myresources 只是继承自 ActiveRecord::Base

但是,因为没有数据库,所以没有要加载的内容,而且 @myallresources 只是一个空数组,导致测试失败。有没有办法在运行 rspec 时连接到数据库?

我对 RSpec 和 rails 非常陌生,因此非常感谢任何帮助。谢谢。

0 投票
2 回答
1649 浏览

ruby-on-rails - 如何使用 Capybara/Capybara Webkit/RSpec click_button 和 page.select 缓解时间/AJAX 问题?

为了简单起见,我省略了大部分测试,只包含了有问题的代码。这是:

当我运行它时,我收到以下信息:

此按钮单击事件触发的 AJAX 请求与 select 标签没有任何关系,因此在测试中颠倒顺序会导致测试通过。我知道 Capybara 的默认等待时间是 2 秒,所以我将其更改为 10:

这不会导致测试通过。我怎样才能让这两种方法相互配合,并按照用户操作网页的顺序工作?

(如果我发布了规范中的代码,我敢打赌这会很快解决。)

0 投票
1 回答
496 浏览

ruby-on-rails - 工厂女孩:名为“关联”的列与名为“关联”的工厂方法重叠

我有以下工厂定义。

我知道工厂定义的“关联”方法,例如: f.association :group, :factory => :group 但我实际上有一个名为关联的列。将值分配给我的列的方法是什么?

更新:在 Maletor 的帖子之后,我找到了一种解决方法 - 感谢 Maletor

我将此添加到我的状态模型中

现在我可以做

工作正常 :)

0 投票
1 回答
160 浏览

ruby-on-rails - 使用 mock_model 测试控制器的问题

我正在尝试测试模型,但在创建模拟模型时遇到问题。

这是控制器的一部分:

这是我的 rspec 的一部分:

但是,当我运行我的 rspec 时,我收到一个错误:

另外,如果我让它工作,我怎样才能更改许可证对象上的一个 ID。'mocks[0].id = 5' 会起作用吗?

任何帮助将不胜感激。谢谢。