rspec 相关问题

RSpec是一种针对Ruby编程语言的行为驱动开发(BDD)框架,受JBehave的启发。它包含基于JMock的完全集成的模拟框架。该框架可以被认为是特定于域的语言(DSL)并且类似于自然语言规范。

如何在水豚中点击表单提交按钮

使用 Rails、rspec 和 capybara,我正在尝试测试典型的 ERB 生成形式: 使用 Rails、rspec 和 capybara,我正在尝试测试典型的 ERB 生成形式: <form action="/pages/1" id="edit_page_1" method="post"> <input id="page_title" name="page[title]" type="text"> <input name="commit" type="submit" value="Update Page"> </form> 我运行两种功能规范,一种是无论哪种语言都相同的,另一种是 I18N 特定的(用于国际化测试)。 问题是没有明确的方法来点击水豚的提交按钮,除非我错过了明显的。我希望简单地click('commit')就能达到目的。 使用 click_button('Update Page') 可以工作,但显然是特定于语言的,并且不能与新建模板和编辑模板一起使用,即使它们呈现相同的表单模板。 向提交按钮添加 id 是可行的,但我非常不喜欢专门更改代码,因为测试需要它。 使用 css 或 xml 匹配器看起来都很丑(用户永远不会知道/关心以这种方式访问元素),而且太过分了。 最后,一个宏就是我需要的答案,因为显然水豚中没有任何原生的东西。 # spec/support/form_helpers.rb module FormHelpers def submit_form find('input[name="commit"]').click end end 这包含在spec_helper.rb中 RSpec.configure do |config| config.include FormHelpers, :type => :feature ...etc... 我使用了 :type => :feature,因此它仅包含在集成测试中。 在集成测试中你可以这样使用它: scenario 'pages can be created' do visit new_page_path fill_in 'page_title', with: 'A Tale of Two Cities' submit_form # Clicks the commit button regardless of id or text expect(page).to have_content 'The page was created' ...etc.. end 当然submit_form也可以在within块内使用并与:js => true一起使用。 我通常这样做: within 'form#edit_page_1' do find('input[name="page[title]"]').set "Some Value" find('input[name="commit"]').click end 它与 html 相关,但与它的语义属性相关,所以我觉得它很好。 事实上我从来不使用神奇的取景器。 顺便说一句,我不明白你的评论:(a user would never know/care about accessing an element that way)。 集成规范适合您,它肯定会模仿用户,但这只是提供正确说明的问题。 尝试使用: find('input[name="commit"]').click 有帮助

回答 3 投票 0

如何从 RSpec 中删除重复项

这是我的规格文件: 上下文“答案是正确的” 在(:每个)之前做 @answer = Stub_model(答案, :正确 => true).as_new_record 分配[:answer] = @answer 任...

回答 2 投票 0

如何在Factorybot中为具有nested_attributes的模型创建工厂

我想用 RSpec 测试以下控制器 coupons_controller.rb: 类 Api::V1::CouponsController < ApiController def index if params[:profile_id] @coupons = Profile.find(para...

回答 1 投票 0

如何解决 ActiveStorage::FileNotFoundError: 使用 rspec 运行测试时?

运行 rspec 时,我使用 ActiveStorage 收到文件未找到错误,但我不知道出了什么问题。 这就是它的设置方式。 存储.yml 测试: 服务:磁盘 根: <%= Rails.root.join(&qu...

回答 1 投票 0

Rspec 测试表单视图与范围路由的问题

在为 Ruby on Rails 应用程序(Rails 版本 6.0.6)搭建新模型后,我对新模型的新视图(索引、显示、新建和编辑)进行了几个搭建的 Rspec 测试。我加倍

回答 1 投票 0

Rspec:“array.should == another_array”但不关心顺序

我经常想要比较数组并确保它们以任意顺序包含相同的元素。在 RSpec 中是否有一种简洁的方法来做到这一点? 以下是不可接受的方法: #设置 对于e...

回答 6 投票 0

如何分析我的 rspec 测试以找到最大的内存消耗?

我们使用 Circleci 作为部署过程的一部分。 Circleci 运行了我们的 3000 次测试,有时会失败,因为它达到了 4 GB 内存限制。看起来我们的一些测试正在创建很多对象......

回答 1 投票 0

在 RSpec 中 - 如何测试一个属性是否小于(或大于)另一个属性

在我的应用程序中我想要一个汽车模型。 它将有两个字段:date_from 和 date_till(指定某人使用它的时间段)。 我希望模型能够验证 date_from

回答 5 投票 0

为什么我在 ruby 中使用 undef 取消定义包含的类方法后无法重新定义它?

我正在升级 Rails 项目,并在早期版本中包含了 Mocha。它定义了一个any_instance方法。我要升级到的 Rspec 新版本还包括 any_instance 方法...

回答 1 投票 0

不同用户上下文的 DRY 请求规范

我正在开发一个 api 应用程序,在此示例中,它有 2 种基本用户类型:管理员和用户。 对于此示例,资源将为 Widget。管理员可以完全访问控制器中的小部件和 u...

回答 2 投票 0

如何使用RSpec检查请求体

我有以下方法 def post_it(data_hash) uri = URI.parse("https://example.com/api") http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true 请求 = Net::HTTP::Po...

回答 1 投票 0

Ruby-rspec - 如何打印出测试(组)名称

如果我有一些测试,例如 require_relative“行” require_relative“LineParser” 描述行做 它“可以被创建” 加载“spec_helper.rb” @line.class.should == 线 ...

回答 4 投票 0

RSpec 测试仅期望 ActiveRecord 模型的某些属性发生变化

我正在成功测试 ActiveRecord 模型的某些属性是否已更新。我还想测试是否只有这些属性发生了变化。我希望我能连接到模型的 .c...

回答 3 投票 0

rspec 测试时处理环境源常量的最佳方法?

我有一个模型,它的常量如下所示: 源配额 = { '免费' => (ENV['FREE_SOURCE_QUOTA'] || '5').to_i, '溢价' => (ENV['PREMIUM_SOURCE_QUOTA'] || '100').to_i }.f...

回答 2 投票 0

Rspec:当我预计失败时,nil.should_not be_nil 通过。为什么?

在 Rails 项目中进行一些 rspec 工作。有点好奇为什么这些不应该为零的期望会通过。有什么想法吗? 它“nils 应该为零” @io = 零 @io.should_not be_nil #passes (shou...

回答 1 投票 0

使用 Rspec,如何在 Rails 3.0.11 中测试控制器的 JSON 格式?

我已经浏览了网络,但是,唉,我似乎无法让 Rspec 正确发送内容类型,以便我可以测试我的 JSON API。我使用 RABL gem 作为模板、Rails 3.0.11 和 Ruby 1.9.2-p180。 我...

回答 3 投票 0

rspec 输出中的星号意味着什么

rspec 输出中的星号意味着什么? ubuntu@ip-172-31-13-166:~/bridge_interfac$ 捆绑执行 rspec 规范 ..................................*。*F............ ......*......*......

回答 1 投票 0

检查“销毁”依赖项时 HMT 测试失败

我目前正在编写 RSpec 测试来验证 Rails 应用程序中的关联。具体来说,我试图确保艺术家模型通过艺术家_...

回答 1 投票 0

Rspec 使用 --only-failures 重新运行所有测试,甚至通过测试

我们有一个 Ruby gem,它为我们的 selenium 测试包装了 rspec。我试图通过重新运行之前运行的失败来实现重试逻辑,但在第二次运行时它只是重试所有内容,而且我

回答 1 投票 0

如何使用 rspec 测试 ActiveRecord 模型范围和查询

我正在尝试在我的 ActiveRecord Flight 对象范围(例如#around_date)上编写 rspec-rails 测试。这是我写的一个测试: 让(:航班){创建(:航班)} 日期 = DateTime.new(年份=2023,

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.