问题标签 [rspec3]

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

rspec-rails - 从 rspec-rails 2.x 迁移到 3.x 后出现错误

在迁移之前,这些步骤已通过,但现在我收到错误:

我定义product_url这样offering_id的方式

0 投票
1 回答
473 浏览

ruby - 在 ruby​​ 2.0、rspec 3.0 中无法从回溯中找到匹配行

在 Rails 4.0 的 Windows 上使用 rspec 3.0、ruby 2.0.0p195 运行功能规范时出现此错误。在谷歌上阅读,我发现修复是使用 rpsec 2.0 中的特定版本,但没有超过该版本。我以为我早就解决了这个问题。和其他人一样,我发现当我手动执行该功能的步骤时,一切都按预期工作。没有指示规范的哪一行失败。我应该在哪里查看 Google 以解决此问题?还是我在某个地方搞砸了?

gemfile.lock

在这里失败:_score_form.html.erb

note_feature_spec.rb

score_controller.rb 的相关部分

错误信息的顶部:

0 投票
1 回答
1066 浏览

ruby-on-rails - 如何在 RSpec 中使用 Spree Route Helpers

我正在尝试在 Rspec 3.0 中使用 Spree 2.3 路由助手。在主应用程序中,我可以通过前缀访问它们spree.,如下所示:

但是我似乎无法在 Rspec 中访问它们。

我找到了在 rails_helper 文件中包含帮助程序的参考,但这会引发错误

如何访问$ rake routes我的测试中给出的狂欢路线?

0 投票
1 回答
492 浏览

ruby-on-rails - Capybara::ElementNotFound - Rspec

这一直让我发疯。请帮忙,我敢肯定这是一个简单的修复,即使它是一个愚蠢的树屋待办事项应用程序。(所以你们这些有经验的程序员在午休时请帮帮我,如果需要,我不会求助于这个)。

我正在尝试创建一个身份验证系统,但由于无法找到 css"#todo_list_1" 而失败

这就是我运行 BIN/RAKE 之后的全部内容

以下是我的失败清单:

失败:

这是我的 ./spec/support/todo_list_helpers.rb:4 的列表

这是我的 ./spec/views/todo_lists/index.html.erb_spec 的列表

需要'spec_helper'

这是我的 ./spec/views/todo_lists/index.html.erb_spec 的列表

需要'spec_helper'

***这是我的 app/views/todo_lists/index.html.erb

0 投票
1 回答
380 浏览

ruby-on-rails - RSpec 正在缓存我的源代码,我不想要它

如果我运行,我将 RSpec 与 RoR 4.1 一起使用

或者

如果是第一次执行,rspec 将正确加载文件,但在第二次执行时,它将加载缓存的文件。我可以确认产生的回溯是指我用评论交换的旧点。它指的是评论!

如何禁用此功能,恕我直言,它不应该是默认设置。

0 投票
0 回答
590 浏览

ruby-on-rails - 使用 RSpec 测试时,Rails 4 ActiveModel 不会 update_columns

在使用人和浏览器的正常测试中,一切都按预期工作。但是,当我使用 rspec 时,我可以看到我有:

但我不敢相信我的数据库记录实际上没有更新。以前我使用 .save,但实际上没有成功,它创建了 SAVEPOINT。

我遇到麻烦的代码基本上是一个 API 端点:

客户可以随时到达此位置,并且将跨越工作人员。当新记录已在数据库中但 is_processed 为 false 时,worker 将退出。因此,多次调用它是可以的,这也是检查工作是否完成的一种方法。

工作人员将等待客户输入验证码。所以,我们有像 WaitableLogin 这样的类,它基本上是:

因此,WaitableLogin 将检查 client_stuff 是否已更新。如果是,那么我们知道客户端已经提交了验证码(通过端点,工作人员将检查验证码是否为参数,如果有验证码字段,则更新数据库)。

然后将控制权转移回 Worker。您可以看到有很多代码在跨文件的许多代码部分使用缓存,缓存只是变量名,与它在 Rails 中的语义含义无关。

当我在浏览器上正常运行时,我看不到任何问题。事实上,即使我使用 .save,也没有 SAVEPOINT。我想,它在某处使用该 SAVEPOINT 创建了一些错误,所以我决定尝试使用 .update_columns。但是,再一次,没有成功。

这是测试之前的样子(:each) do System::Flights::Cached.delete_all end

所以我错过了什么,我累了。没有引发错误。当我在 update_columns 之后检查 .inspect 时,似乎所有内容都已更新。但是,当您在数据库中看到时,没有任何更新。

编辑:我放了 lock_version 以便我有乐观锁定(默认情况下,我认为)。结果,正如预期的那样,它被设置为 2。

编辑2:如果我在代码要求验证码时从rails控制台命令编辑,它会更新数据。所以,为什么运行 api 端点以提交验证码的 RSpec 规范不会更新该行。所有现实生活中没有原始规范的代码都被很好地执行。

0 投票
0 回答
68 浏览

ruby - 更改 rspec 的可组合匹配器的“得到”消息

我编写了一个名为 have_backtrace/error_with_backtrace 的可组合匹配器,如下所示:

然后我可以像这样使用它:

这工作正常,但是错误消息不是我想要的

我希望“得到”部分也说(error with backtrace ...)

有没有办法做到这一点?

0 投票
1 回答
1271 浏览

ruby-on-rails - 如何在 Rspec 3 功能规范中存根 Rails 助手/模块方法?

我已经看到使用旧should_receive语法完成此操作,但我无法弄清楚如何在 Rspec 3 中存根 Rails 模块方法。

我试过这些:

但实际上没有人存根该方法。

0 投票
1 回答
1973 浏览

testing - 如何使用 RSpec 检查页面中有多少特定的 HTML 元素?

在 Rails 4 功能规范中,使用 RSpec 3 和 Capybara,我如何断言页面中是否存在一定数量的特定标签?

我试过了:

但它不起作用,说:

此外,在功能规范中测试视图中使用的标签和类的种类是一个好主意/坏做法吗?

0 投票
2 回答
1053 浏览

ruby-on-rails - 如何使用 rspec 测试 assm 保护错误?

我有一个带有一些保护的状态机来防止特殊的状态转换。在我的规范中,我试图期待像这样的守卫违规错误:

结果,我在规范测试中收到了正确的错误:

失败/错误:expect(my_model.change_event).to raise_exception AASM::InvalidTransition:事件“change_event”无法从“current_state”转换

我想知道我应该如何更改我的规格以获得满意的测试?