RSpec是一种针对Ruby编程语言的行为驱动开发(BDD)框架,受JBehave的启发。它包含基于JMock的完全集成的模拟框架。该框架可以被认为是特定于域的语言(DSL)并且类似于自然语言规范。
Rails Rspec 测试路由使用的 lib 类包含私有方法
Simplecov 检测到我缺少对 lib/api_verson.rb 类的一些测试: 类 ApiVersion def 初始化(版本) @版本=版本 结尾 def 匹配?(请求)
我有一个单独的测试通过,但是当我一起运行所有内容时,它失败了。我运行了 --bisect 标志,这就是它给我的: 最小的复制命令是: rspec ./spec/requests/a...
将 rspec 与 capybara-webkit 或 selenium 一起使用来测量页面加载时间
我希望找到一种方法来编写可用于测量页面加载时间的 rspec 脚本(或其他脚本)。与firebug如何判断页面何时完全加载如此相似,是否有类似的...
我用的是赤铜矿0.13 水豚3.53.3 规格3.11 我有一个简单的规范,单击带有 target="_blank" 属性的链接。 new_window = page.window_opened_by 做 点击...
我正在使用名为 kubernetes_leader_election 的 gem 编写一些代码,它在自述文件中提供了一个完整的示例,展示了如何使用它。我的用法和READM基本一样...
使用 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 有帮助
这是我的规格文件: 上下文“答案是正确的” 在(:每个)之前做 @answer = Stub_model(答案, :正确 => true).as_new_record 分配[:answer] = @answer 任...
如何在Factorybot中为具有nested_attributes的模型创建工厂
我想用 RSpec 测试以下控制器 coupons_controller.rb: 类 Api::V1::CouponsController < ApiController def index if params[:profile_id] @coupons = Profile.find(para...
如何解决 ActiveStorage::FileNotFoundError: 使用 rspec 运行测试时?
运行 rspec 时,我使用 ActiveStorage 收到文件未找到错误,但我不知道出了什么问题。 这就是它的设置方式。 存储.yml 测试: 服务:磁盘 根: <%= Rails.root.join(&qu...
在为 Ruby on Rails 应用程序(Rails 版本 6.0.6)搭建新模型后,我对新模型的新视图(索引、显示、新建和编辑)进行了几个搭建的 Rspec 测试。我加倍
Rspec:“array.should == another_array”但不关心顺序
我经常想要比较数组并确保它们以任意顺序包含相同的元素。在 RSpec 中是否有一种简洁的方法来做到这一点? 以下是不可接受的方法: #设置 对于e...
我们使用 Circleci 作为部署过程的一部分。 Circleci 运行了我们的 3000 次测试,有时会失败,因为它达到了 4 GB 内存限制。看起来我们的一些测试正在创建很多对象......
在 RSpec 中 - 如何测试一个属性是否小于(或大于)另一个属性
在我的应用程序中我想要一个汽车模型。 它将有两个字段:date_from 和 date_till(指定某人使用它的时间段)。 我希望模型能够验证 date_from
为什么我在 ruby 中使用 undef 取消定义包含的类方法后无法重新定义它?
我正在升级 Rails 项目,并在早期版本中包含了 Mocha。它定义了一个any_instance方法。我要升级到的 Rspec 新版本还包括 any_instance 方法...
我正在开发一个 api 应用程序,在此示例中,它有 2 种基本用户类型:管理员和用户。 对于此示例,资源将为 Widget。管理员可以完全访问控制器中的小部件和 u...
我有以下方法 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...
如果我有一些测试,例如 require_relative“行” require_relative“LineParser” 描述行做 它“可以被创建” 加载“spec_helper.rb” @line.class.should == 线 ...
RSpec 测试仅期望 ActiveRecord 模型的某些属性发生变化
我正在成功测试 ActiveRecord 模型的某些属性是否已更新。我还想测试是否只有这些属性发生了变化。我希望我能连接到模型的 .c...
我有一个模型,它的常量如下所示: 源配额 = { '免费' => (ENV['FREE_SOURCE_QUOTA'] || '5').to_i, '溢价' => (ENV['PREMIUM_SOURCE_QUOTA'] || '100').to_i }.f...
Rspec:当我预计失败时,nil.should_not be_nil 通过。为什么?
在 Rails 项目中进行一些 rspec 工作。有点好奇为什么这些不应该为零的期望会通过。有什么想法吗? 它“nils 应该为零” @io = 零 @io.should_not be_nil #passes (shou...