我想测试对象在Rails操作中是否具有特定值。我怎样才能用Rspec做到这一点
我最初的尝试是:
it "should have @body_class equal to 'buildings'" do
response.should =~ / buildings /
end
编辑:
我应该指定@body_class正在控制器中设置,并由助手用于为body标记的class属性赋值。我希望它可能在响应对象中可用,但它不可用。实例变量可以在赋值哈希中找到:
# controller
def
当我执行rspec规范时,我会通过以下方式获得测试报告:
Course Group
Loged in
In the new course group form
Create a new Group course
Create a new Group course with complex name (FAILED - 1)
Create a new Group course with 3 subjects (FAILED - 2)
1) Cour
如何在rails中生成rspec?
我还为rspec安装了插件。。
我还安装了gem-rspec、rspec-rails。。
现在我能做些什么呢?一旦你安装了rspec,就会有新的生成器可用,叫做rspec_scaffold,rspec_model和rspec_controller,它们的工作原理与普通的rails生成器类似,只是不生成存根测试,他们生成存根规范。带着同样的问题来到这里,唐的回答让我走上了正确的道路。但是,生成器有:而不是Rails 3名称中的uu:
> rails g r
我的模型将具有使用Date.current的逻辑,如下所示:
if(date_three && date_three != Date.current.yesterday)
...
end
如何在我的规格上更改系统的当前日期,以便我可以使用不同的日期测试我的模型?这类任务有一个gem,-.这类任务有一个gem,-.将要测试的日期作为依赖项传递,不要硬编码。这将允许您的测试选择要测试的日期,其他方法可以传入date.current.Duplicate-Google“ruby t
我正在尝试测试一个链接,我希望我能解决这个问题:
我试着像这样测试链接:
nested_element= "div.page_margins div.page iv#nav div.hlist ul li#2"
within(nested_element) do
response.body.should have_link("Next", :href=>"javascript: void(0)")
end
但我得到了这个错误:
Capybara::ElementNotF
我正在使用Deave async gem异步发送我的Deave电子邮件-使用Resque
我正在做一些简单的RSpec控制器测试,通过检查ActionMailer::Base.deliveries数组来确保发送忘记的密码
在我开始使用DeVIATE async gem之前,它就已经起作用了。我怎样才能立即“发送”队列中的电子邮件,使它们以ActionMailer::Base.deliveries结束
例如,当我使用delayed_作业异步发送它们时(不使用designe async gem),我
我已经连续三天与我的社团斗争,不知道还能往哪里去。我确信这个问题很简单,但我对RubyonRails还相当陌生,这让我很困惑
我已经创建了一个用户模型,它保存了用于设计身份验证的所有登录凭据。我有另一个配置文件模型,它保存了所有用户的设置(名字等)。最后,我有一个地址模型,它使用与概要文件关联的多态关联
用户有一个配置文件。配置文件属于用户,并且有一个地址。地址是一种多态关联,它使我的应用程序中的其他模型能够拥有与它们关联的地址
有一次,我让我所有的FactoryGirl定义都正常工作,但我正在
我在MacMini上使用RubyMineIDE中的rspec成功地创建了几个葫芦ios测试,效果非常好
然而最近我搬到了iMac,因此不得不配置和安装ruby和必要的gems。
但是,由于以下错误,这次我无法执行测试,我被卡住了。(复制了下面的错误消息)
最好的猜测是,这与两台机器上的gems版本不同有关。我做了详细的版本比较,发现了不少差异。。在此列出我认为可能与此错误相关的错误:
(不幸的是,我现在无法安装gems的旧版本(在iMac上),因为它们不再存在,而是更新版本)
以Gem name
标签: Rspec
capybaracapybara-webkit
我用水豚点击一个复选框,但无论我做什么,它似乎都找不到。我能够正确地找到范围和范围内的标签,但不能找到我实际需要的输入
这是复选框
<span class="checkbox tos">
<input id="agreement" name="agreement" onclick="agreeValidate();" type="checkbox" value="false">
<label for="agreement">I accept the &
标签: Rspec
rubygemsruby-on-rails-5.1
我对测试完全是新手,但我想学习,而且我在使用Rspec测试我创建的gem时遇到了麻烦。gem只是在所需位置创建一个包含两个文件的新文件夹。如何测试文件是否已创建并位于正确的位置
我使用bundler创建gem,并在我的gempec文件中添加了spec.add_development_依赖项“rspec”,“3.0”,目前我的spec文件夹包含my_gemname.rb和spec_helper.rb。我是否需要创建一个spec/dummy,并为rspec安装一个完整的应用程序进行测试?如何在rsp
标签: Rspec
rspec-railsruby-on-rails-5.2
我需要一些帮助
当我尝试从Rails使用ajax更新模型时,我遇到了一个错误(form_with/remote:true)。我能够很好地处理由Rails提供资源的URL的XHR请求(请参阅下面的路由),但对于自定义URL,我遇到了一个错误
控制器:
rspec(请求):
视图:
正如您在test.log中所看到的,由UserController处理#criar As没有特定的格式(也许这就是问题所在?)
test.log:
错误消息:
另一个请求测试
错误消息
失败/错误:预期(响应)。将\u重
标签: Rspec
ruby-on-rails-5factory-botrspec-rails
可能是一个复制品,但它对我不起作用。
请让我知道我错过了什么
配置详细信息:
#Gemfile
gem 'factory_bot_rails' # 4.8.2
#spec/rails_helper.rb
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
#other config
end
spec/factories/otps.rb
FactoryBot.define do
factory
这是rspec中之前的部分:
每次创建对象a时,我都要创建一个新的对象b。由于FactoryBot可处理惰性对象,因此不会重新创建对象:
before do
create_list(:object_a, 3, object_b: create(:object_b))
end
如何告诉FactoryBot为此创建列表中的每个对象创建一个新的对象
更新:奇怪的是
before do
3.times { create(:object_a, object_b: create(:object_b
如何使用capybara检查页面上的html内容
page.should have_text('this is <b>bold</b> "text"')
page.应该有_文本('这是粗体的“文本”)
输出:
Failure/Error: page.should have_text('this is <b>bold</b> "text"')
expected there to be this is <b>bold</b> \"text\"
Heroku说Ruby 2.0是。好的,我会更新我的应用程序。但我的测试失败了。这一次失败了:
a_date.should == the_same_date
日期是相等的。除了Ruby 1.9.3下的相同测试通过之外,我怎么知道呢?这在2.0下通过:
a_date.to_i.should == the_same_date.to_i
这是Ruby 2.0中的一个bug吗?我找不到任何关于破坏对日期相等的更改的信息
更新
以下是实际测试输出:
Failure/Error: target.shou
我的规格将通过主分支。如果我创建一个新的分支并修改一些与订阅完全无关的代码,它们将失败。我能让他们通过的唯一方法就是把我的vcr.rb改成有:record=>:new_剧集
如果我保留这个选项,那么几乎每次我的规范运行时,我都会有新的修改过的磁带数据文件,这些文件最终被提交,这实际上稀释了Git的日志
对如何处理这个问题有什么建议吗?许多破坏的规格都基于此匹配器:
describe "#change_plan_to", vcr: {match_requests_on: [:method, :
如果我在RSpec中有一个descripe语句,其中包含一组let、before和it语句,那么只要保持给定语句类型中的顺序,这些语句的特定交错是否会影响行为?例如,将:
describe "ordering test" do
<it1>
<it2>
<before1>
<let1>
<let2>
<before2>
end
描述“订购测试”应该做什么
结束
始终产生与以下相同的结果:
descr
Gem文件
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0'
# Us
我有一个提示自动完成的方法。我也在使用Solr
控制器中的方法如下所示:
def address_autocomplete
search = Sunspot.search(Address) do
fulltext params[:term]
with(:user_id, current_user.id)
end.results
render json: search.map(&:address_with_id_to_string).to_j
我正在构建一个非常小的SinatraAPI,今天我开始为它编写测试。我用的是RSpec和FactoryGirl
我有一个用户模型,在控制器中我检查正在注册的用户的电子邮件是否已经保存。如果保存,则返回402;如果没有,则创建用户并返回200。为了测试这一点,我使用相同的参数向用户路由发送了两次帖子,在第一次帖子中,我检查了最后的响应。应该是“ok”,因为数据库是空的,所以我可以创建用户,然后我做了另一个测试,在用户上发布与之前相同的参数,但期望得到最后一个响应。如果不正常,我会得到一个200!所
标签: Rspec
rspec-railsguard
正在尝试使用Rspec 3.0.0.beta2配置Guard。运行guard时,我遇到以下错误:
Guard::RSpec未能实现其目标,异常为:……NoMethodError:未定义的方法“parse_options”#
任何人有什么想法吗?你的防护版本是什么,防护rspec版本等等
请遵循(并且不要犹豫。更新到正确版本的rspec、rspec rails和guard rspec对我有用,请执行gem list rspec、gem list guard以确保您拥有每个gem的最新版本
gith
我正在rspec中编写一个capybara测试,试图找到一个元素的计数,该元素的属性有一个特定的值。我的DOM具有以下元素:
<svg version="1.1" id="some_id" x="0px" y="0px" viewBox="0 0 2 2" enable-background="previous 0 0 2 2">
<svg version="1.1" id="some_id" x="0px" y="0px" viewBox="0 0 2 2" enable-b
情况如下:一个页面上有n个面板。遍历每个面板:单击特定的元素,然后查找其子元素的文本,该文本仅在单击后显示
我可以使用像.has_css?这样的方法,但这对我没有帮助
显然,在这里使用find会很有帮助,但它不适用于Capybara::Node::Element
page.all(:css, panelCss).each do |panel|
counter+=1
if panel.has_css?(elemCss)
Actions.c 'Yay! Found #
我有一个JSON结构,我希望在忽略其他数据的同时匹配其中的单个嵌套元素。JSON看起来是这样的(最低限度):
下面是我现在正在使用的:
response_json = JSON.parse(response.body)
expect(response_json).to include("employee")
expect(response_json["employee"]).to include("jobs_count" => 0)
我想做的是:
expect(response_json
我想测试类的initialize方法是否需要两个参数。我有以下资料:
class Game
end
...
require 'game'
describe Game do
describe '#initialize' do
it 'requires two players' do
expect(Game).to respond_to(:new).with(2).arguments
end
end
end
出于某种原因,上面的代码通过了,即使尝试使用2个参数
我对Chef比较陌生,对ChefSpec也很陌生。我正在尝试运行Coverage以使用下面的spec\u helper.rb文件获取ChefSpec覆盖率:
require 'chefspec'
require 'chefspec/berkshelf'
ChefSpec::Coverage.start! do
add_output do |reportOutput|
File.open( "coverage.json","w" ) do |f|
f.puts(repo
我需要看到href“edit_data_source_group_path(data_source_group_1.id)”,它在表中,我尝试了上面的代码
我确信我没有在contains下传递正确的表达式
然后去下面的错误
Selenium::WebDriver::错误::InvalidSelectorError:
给定的xpath表达式“//table//tbody//tr//td[4][contains(href(),edit_data\u source\u group\u path(dat
我有这个:
<input class="string optional"
id="course_group_courses_attributes_2_name"
name="course_group[courses_attributes][2][name]"
placeholder="Lengua"
size="15"
type="text" />
</div>
如何通过ID填写该字段?fill\u in接受ID作
我正试图将rspec与MacRuby结合起来测试一个用Objective-C编写的框架
然而,似乎不可能使用这种方法来存根某些选择器。例如:
Foo.stub(:currentSession).and_return(double("session"))
结果:
RuntimeError:
cannot remove method `obfuscated_by_rspec_mocks__currentSession' because it is a native method
从spec文件的上下文之外,您如何/能够了解如何获取当前示例并检查其元数据
如果测试失败。RSpec目前没有提供用于访问当前示例的公共API(因为它在内部没有全局可访问的当前示例的概念),但是在挂钩之前使用全局单独公开这一点非常简单:
RSpec.configure do |rspec|
rspec.before(:each) do
$current_rspec_example = self
end
end
然后,您可以从任何地方使用$current\u rspec\u exa
标签: Rspec
capybararack-test
Capybara 2删除了这些,并建议将它们分开,但在某些情况下,我们希望在测试中同时使用它们(通过视图启用api键,然后点击api,等等)
我尝试了包括include::Rack::Test::Methods,但我得到了:
undefined local variable or method `app' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007fb737932ba0>
未定义的局部变量或方法“app”#
我
标签: Rspec
thinking-sphinx
默认情况下,我已为所有模型启用增量索引:
ThinkingSphinx::Index.define :book, :with => :active_record, :delta => (::Padrino.env == :production ? ThinkingSphinx::Deltas::SidekiqDelta : true) do
我想在运行Rspec时关闭增量索引(因为运行测试需要更长的时间,而且我还收到一个错误,即无法访问delta.spl文件:FATAL:无法打开d
我知道我可以使用assigns查看实例变量是否分配给某个对象,但如何测试是否设置了另一个属性
class UsersController < ApplicationController
def new
@user = User.new
@user.name = "Tom Lehrer"
end
end
describe UsersController do
it "assigns a user" do
get :new
expect(ass
我试图测试电子邮件是否在对象的创建回调后发送
class Payment < ActiveRecord::Base
#associations
belongs_to :quotation
#validations
validates :method, :amount, :quotation, :presence => true
#callbacks
after_create :send_email_confirmations
我正在编写一些控制器/请求规范,目前正在处理一个更新请求。相当直截了当,在许多其他情况下,这是完美的工作,但我似乎遇到了一个障碍
在routes.rb文件中,我限制了控制器的操作
resources :model, except: [:destroy, :edit, :new]
为了避免在用户请求/new时调用show操作的问题,我添加了一个约束,因此路由现在看起来像
resources :model, except: [:destroy, :edit, :new], constraints:
标签: Rspec
deviseuser-registration
Rspec配置
RSpec.configure do |config|
config.include Devise::TestHelpers, :type => :controller
...
路线
devise_for :users, controllers: { passwords: "users/passwords", sessions: "users/sessions", registrations: "users/registrations"}
关于会话控制器
class
您好,我正在使用chefspec进行测试,我发现以下错误
在/cookbook/wordpress/recipes/default.rb
wp_secrets = Chef::Config[:file_cache_path] + '/wp-secrets.php'
if File.exist?(wp_secrets)
salt_data = File.read(wp_secrets)
else
require 'open-uri'
salt_data = open('https:/
我正在从rspec2升级到rspec3,希望使用新语法,而不是启用旧语法。但是我在我的顶层之前(:each)块中设置了一些存根,我有选择地unsub在我想要原始实现的地方
当我使用新的allow语法定义存根时,是否有一些等效的方法来删除存根?您可以使用
expect(Person).to receive(:find).and_call_original
这将额外检查原始的:find方法是否在person上调用了啊,我不知道我可以重新定义它。现在看来很明显!我还发现我也可以使用allow重新定义
标签: Rspec
capybarapoltergeistsummernote
我有一个正在使用的textarea,我将onChange事件设置为它。我想用RSpec+Capybara+Poltergeist编写测试,以确认onChange事件正在工作
据我所知,浏览器中显示的文本区域实际上是带有“note editable”css类的div标记。如何设置文本并触发onChange事件
我编写了这样的代码,但出现了一个错误Capybara::ElementNotFound:无法找到字段“somelabel”:
编辑
我为此问题创建了一个示例应用程序:
原始HTML
RSp
如果我在终端中键入以下内容
rspec spec --format documentation
然后我得到了这个错误
invalid option: --format
然而在这个网站上,它说它是有效的
我有Rspec的3.3.2版。它真的应该是这样工作的。我只是在我的应用程序中进行了尝试以确保它正常工作:rspec spec——格式化文档
您是否安装了多个rspec版本?检查一下
还有,试试这个:
bundle exec rspec spec --format documentation
标签: Rspec
paperclipruby-on-rails-5shoulda
我使用的是rails 5.1.1和ruby 2.3.1
当我执行rspec时,我得到以下错误
`require':无法加载此类文件--回形针/匹配器(加载错误)
档案:
gem“rspec-rails”,'>=3.6.0'
gem“shoulda matchers”,“~>3.1”
gem'shoulda callback matchers',“~>1.1.1'
我在spec_helper.rb中包含了以下内容
require "paperclip/matchers"
config.inclu
标签: Rspec
test-kitchenserverspec
我已经在同一个环境中运行测试好几个星期了,没有任何问题。就在今天,我开始犯错误:
/opt/chef/embedded/bin/ruby -I/tmp/verifier/suites/serverspec -I/tmp/verifier/gems/gems/rspec-support-3.9.0/lib:/tmp/verifier/gems/gems/rspec-core-3.9.0/lib /opt/chef/embedded/bin/rspec --pattern /tmp/verifier
我想在运行某些视图规范时看到html页面
如果我运行Cucumber,我可以使用“并向我显示页面”来实现这些目的。Rspec是否可行?您可以使用水豚和launchy gems,然后使用保存和打开页面,如本文所述。它提供了未定义的局部变量或方法保存和打开页面'`,我缺少什么?我必须将launchy添加到我的Gemfile中,而不仅仅是手动安装,才能让它工作。也许你可以确定你不需要那样做。
JRuby 1.6.5(ruby-1.9.2-p136)
宝石:
在rake文件中:
require 'rubygems'
require 'rake'
require 'rake/clean'
require 'rake/gempackagetask'
require 'rake/rdoctask'
require 'spec/rake/spectask'
当我运行rake时,我得到:没有这样的文件要加载——spec/rake/spectask
我在网上找到的所有示例都显示了引发异常的需求。
我在使用RubyonRails和rspec方面是新手
当我尝试为Mymodel Controller执行rspec测试时,我遇到了这个问题
当我通过浏览器访问页面时,Mymodel正在按预期工作。。。但是当我执行rspec测试时失败了
class MymodelController < ApplicationController
def show
@model = Mymodel.find(:first, :conditions => { :title => "Mo
我刚开始使用rspec should_receive,有很多问题,因为它“取代”了这个方法。例如:
UserMailer.should_receive(:new_order).with(order)
为nil:NilClass提供未定义的方法“deliver”,因为rspec使该方法停止工作。如何处理此问题?您可以通过在方法链中添加和\u call\u original来处理此问题,如下所示:
UserMailer.should_receive(:new_order).with(order)
我有两个不同的清单文件,一个是define,另一个是普通清单
class bfile {
require dummy
if $::operatingsystemmajrelease > 5 {
file {'/some/path/foo':
ensure => present,
owner => 'root',
group => 'root',
mode => '0644',
下面是我的活动管理资源文件和rspec功能
当我运行rspec时…它失败失败/错误:选择全年,从:从财务月
Capybara::ElementNotFound:
找不到全年的选项
有人能帮忙吗
****资源文件:我已经让jst发布了我的资源文件的表单操作,这与我面临的问题有关****
ActiveAdmin.register ------------(code)
--------------------------------(code)
form do |f|
f.inputs do
标签: Rspec
diffequalitymatcher
有没有办法在失败的eq匹配器上禁用差异计算
我的代码如下所示
object1 = MyCustomObject.new(param1)
object2 = MyCustomObject.new(param2)
expect(object1).to eq(object2)
如果发生了什么错误,而这些对象不相等
object1 == object2 # false
rspec试图计算差异,但我的对象非常复杂,这导致我的PC和Ubuntu上的内存占用刚刚挂断。真的-我不需要这个差异,所以我只想禁用
是否可以向预期添加自定义错误消息,如下所示:
expect(user.uid).to eq uid
我试过:
expect(user.uid).to eq uid, "Custom message"
因为,但我想那是一个操作员匹配器。还有其他方法吗?正如您所说,基于Ruby的内置字符串、数字和数组操作符==,>,的Matcher不支持定制的失败消息。事实证明,我所做的基本上还可以:
expect(user.uid).to eq(uid), "Custom message"
工作正常,只是我
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 26 页