我正在使用RSpec、Mongoid DB和FactoryGirl。以下是我的课程\u spec.rb和工厂/用户.rb
require 'spec_helper'
describe Lesson do
context "has valid data" do
before :each do
@course_template = FactoryGirl.create(:course_template1)
@user = FactoryGirl.build(:us
我试图在水豚中寻找连锁方法,但运气不太好。我希望第二个查找只在第一个查找的输出中查找文本。但是,第二个查找将搜索整个文档
element = page_foo.find('.bar')
element.find('div', :text => "name")
=> All divs with the text "name" on the page.
下面介绍了使用xpath的解决方案:
但是,我对xpath不太熟悉,希望找到一种解决方法
其他详情:
HTML:
我的宝马5系G
我想确保我的网站上的一个元素只在登录时显示
我现在就是这样做到的:
it 'displays statistics when logged in' do
expect {
login_as(create :user)
refresh_page
}.to change {
page.has_content? 'Statistics'
}.from(false).to true # I know, "to true" is redundant here, but
标签: Rspec
capybaraintegration-testing
这是我的项目的图像
我们可以在导航栏中看到登录和注册。我通过请求一个外部javascript文件来附加它们
$.get('xxxx/extern.js')
但是当我运行Rpec和Capybara的测试时,我无法得到这两个链接
这是我测试的截图
我试图扩大等待时间Capybara.default\u max\u wait\u time=15但不起作用
有人知道如何解决这个问题吗?你的firefox和chrome版本是什么,打开一个控制台刷新你的页面,看到可能是链接没有呈现你使用的是什么驱动程序
在我的规范测试中对chef_env变量的刺伤有问题。配方的一部分:
recipe.rb
example_credentials = data_bag_item(:credentials, 'example')
template '/etc/nginx/sites-available/example.conf' do
source 'http/example.conf.erb'
owner 'root'
group 'root'
mode
我正在尝试为posts/show.html.erb视图编写规范,该视图是我为学习rspec而编写的一个简单应用程序。我现在有点困惑,想弄清楚额外的%2F是从哪里来的。有什么想法吗
我的规格
it "should render a form to add a comment" do
render "posts/show.html.erb"
response.should have_selector("form[method=post]", :action => post_
这是我的测试:
require "rspec"
describe HomeController do
render_views
it "should renders the home" do
get :home
response.should render_template("home")
response.should include_text("Simulate Circuits Online")
end
end
但是,我得到了:
1) HomeC
仅显示在(:suite)之前(:all)之前调用before(:suite)
什么时候我应该使用一个而不是另一个
您还可以使用before(:suite)在任何
运行示例组。这应该在RSpec.configure中声明
当在RSpec.configure块中定义了before(:all)时,将在每个顶级示例组之前调用它,而before(:suite)代码块只调用一次
下面是一个例子:
RSpec.configure do |config|
config.before(:all) { puts
当我尝试运行rspec测试时,我收到以下响应
user.respond_to?(:name)
应该得到“true”,但得到以下错误
*false是我应该得到的响应,上面的错误是我收到的
这是我的user.rb文件
class User < ActiveRecord::Base
attr_accessible :name, :email
validates :name, presence: true
end
您没有错过错误消息的第一行吗?那个能准确地告诉你出了什么问题的部分?对
我已经将rails 3升级到rails 4。在我更改了Gemfile、routes和其他内容之后,我能够运行服务器并像以前一样导航到页面
但是,在运行规范时,我收到了相同的错误消息:
XXX控制器的未定义方法“respond_to”
我是否需要更新RSpec gem或其他内容
谢谢您能在出现故障时分享示例/测试代码吗?respond\u to是一个基本的RSpec匹配器,与Rails无关,因此它不依赖于您使用的Rails版本。@PeterAlfvin不是吗?非常奇怪的行为。你能分享你的测试代码吗
我想在从终端运行rspec时传递配置选项,而不是在rspec读取的文件中设置它们
我的spec\u helper指定了config.order='random',所以我需要覆盖它
用例生成一个命令以用于rake任务(生成文档)
我试过:
rspec spec/ --config.order default
但是--config是无效的选项请尝试:
rspec spec --order default
通常,大多数命令行选项的格式为--。有关详细信息,请参见rspec--help。Ah nic
标签: Rspec
factory-botshouldaruby-on-rails-4.1
我在这里有点新手。。我找不到解决rspec故障的明显方法。我正在尝试测试作用域唯一性验证(请参阅下面character\u class\u spec.rb中的测试)。我假设错误告诉我它找不到字符\u类工厂??不管怎么说,我正在为这项工作的数据和测试设置而挣扎。如能提供意见/帮助,将不胜感激
运行“rspec规范”时出错
1) 字符类
失败/错误:let(:character\u类){build(:character\u类)}
命名错误:
未定义的方法character\u class='for#
我的测试已经完成了
scenario 'with all required fields entered' do
fill_out_form zip.zip_code
click_button(page_object.eqv_continue_button)
expect(page).to have_css(page_object.css_vehicle1_ownership)
expect(current_path).to eq(landings_path)
end
标签: Rspec
rspec-railsstub
我有一个lib/require/environment\u helpers.rb文件,其中包含helper方法。有更多的方法,但它没有包装在一个模块中
def development?
Rails.env.development?
end
def test?
Rails.env.test?
end
我正试图剔除这些方法,但我一点运气都没有。我试过:
before :each
allow(Rails.env).to receive(:production?) { false }
e
标签: Rspec
rails-activestorageruby-on-rails-5.2
首先,让我描述一下问题。我使用RSpec运行一个脚本来生成一些测试数据
RAILS_ENV=development rspec spec/dev/food/food_upload.rb
脚本如下所示
image = fixture_file_upload(Rails.root.join('spec', 'resources', 'test2.png'), 'image/png')
(0..200).each {
food = FactoryBot.build
我已经升级到Rails 3.1,一切似乎都很好。但RSpec测试无论如何都会失败,例如以下测试:
describe "for admin user" do
before(:each) do
@city = Factory(:city)
@user = Factory(:user)
@business = Factory(:business, :user_id => @user.id,
:city_id =>
我停用了用户注册(Gem designe),我想做一个测试,以确保路由/users/sign\u不存在
为此,我在spec/features/user\u spec.rb
require 'spec_helper'
require 'capybara/rspec'
feature "Users" do
scenario "could not register " do
expect(:get => "/users/sign_up").not_to be_routable
虽然我的所有规格都显示为通过我的终端,但通知始终显示它们失败。这是一个非常简单的设置,但我有什么配置错误吗?如何对此进行故障排除
Gemfile
警卫文件
问题是guard未配置为使用bundle exec运行rspec
guard :rspec, cmd: 'bundle exec rspec' do
...
end
notification :terminal_notifier
guard :rspec, all_after_pass: true, all_on_start: true
我第一次尝试建立Rspec。我已从等级库/模型和等级库/控制器中删除所有旧生成的等级库
Gemfile
group :development, :test do
gem 'jasmine-rails'
gem "jasmine-core", "~> 1.3"
gem 'binding_of_caller'
gem 'rspec-rails', '~> 3.0.0'
gem 'factory_girl_rails'
end
group :test do
gem
标签: Rspec
capybarapoltergeist
当我点击一个按钮时,会显示一个引导模式弹出窗口。我试着用下面的Poltergeist函数点击OK或cancel按钮,但都没有成功。要么功能不工作,要么在外部单击
<div class="modal-footer">
<a class="btn cancel" data-dismiss="modal" href="#">Cancel</a>
<a class="btn proceed btn-primary" href="#">OK</a>
我试图使用Rspec和Capybara来验证生成的HTML页面是否没有死链接。大多数(如果不是全部)链接都指向同一文件系统上的相对HTML页面
我要找的是:
it 'has no broken links' do
all('a') do |link|
visit link[:href]
# 200 is the Ok HTTP response
page.status.should == 200
end
end
但是,这不会产生任何语法错误,也不会查找实际断开的
如何检查数组的元素是否只包含数字(整数)
我的简单LotteryTip类可以工作,但我想知道如何检查返回数组中元素的类型…我不确定这是最佳做法还是至少是良好做法,但我在前面定义了自己的方法:每个do块:
def is_number?
@tip.all? { |x| x.is_a? Integer }
end
因此我可以在it块中进行检查:
it "s elements are only numbers" do
expect(is_number?).to eq(true)
我们的一个(或几个)测试需要花费很长时间,我们希望对它们进行优化
我们说有1000个测试,所以对我来说,遍历并运行每个文件是不切实际的
有没有一个简单的方法来找到慢的
这是rspec 1.3,在rspec 2和3中,您可以使用--profile标志或将--profile添加到.rspec文件中。这将跟踪前10个最慢的示例
对于RSpec 1,您可以将--format o与spec命令一起使用。它显示了一个基于文本的进度条,其中包含10个最慢的示例。更多细节
对我来说--profile选项不适用于
我有一个规范文件:
shared_examples_for "all pages" do
it { should have_selector('h1', text: "heading") }
end
Rspec产生以下输出:
应具有带文本“heading”的css“h1”
但我更愿意:
应具有带文本“heading”的css“h1”
有没有一种简单的方法可以解决这个问题?转到他们的开发报告,并根据需要修改文档,并向他们发出请求!我希望他们会觉得有用并接受它。干杯
编辑:或者,您可以随时通
标签: Rspec
capybaracapybara-webkit
当我的capybara测试运行到rspec文件中的第二个it块时,我无法单击链接或基本上执行任何操作
因此,我的代码如下:
注意-这是一个基本测试,我浏览到一个页面,在before块中创建一个调查,然后在it块中的测试将是编辑和查看调查
require 'spec_helper'
include Tests # - this is a module where I include the Capybara DSL
describe "Survey Tests" do
before :all
我有一个方法,它的调用方式如下:
post_signup(user,
"fb signup completed",
app_context: current_app_id,
description: "Automatically Populated Via #{current_app_id}")
参数是值和关键字参数的组合。我在测试中关心的是应用程序上下文。我尝试过类似的方法,但不起作用:
it "should log a
我想可能有一个更好的方法来做到这一点,然后复制粘贴100次
但本质上我有一个表单页面,有很多单选按钮(准确地说是95)。我正在使用page.find(:xpath)totrigger('click')on
Xpath看起来有点像这样:
page.find(:xpath, '/html/body/div/div[2]/div/div[2]/form/div[2]/table/tbody/tr[1]/td[2]/div/label').trigger('click')
每行单选按钮选项的TR[x]
我的文件包含以下内容:
source 'https://rubygems.org'
ruby '2.3.1'
gem 'rails', '>= 5.0.0.rc2', '< 5.1'
... more gems
group :development, :test do
gem 'rspec-rails', '~> 3.5'
gem 'factory_girl_rails', '~> 4.7'
gem 'byebug'
end
group :test
当我们运行一个大型测试套件时,它在早期测试中经常会失败,但我们仍然希望运行整个套件
如果能看到所有的绿色都用点来表示,那就太好了
但是,和F一样,对于fail,最好能看到stacktrace,甚至仅仅是错误的行号
你对如何实现这一目标有何想法?
干杯
Ian.您正在描述RSpec默认工作方式。你需要额外的选择,比如-fail fast,让它在第一次失败时停止
如果您没有更改rspec行为的选项,可以检查您的.rspec文件?如问题所述,我们不需要在第一次失败时停止,而是显示失败,然后继续。谢谢你
目前,我正在阅读Michael Hartl的Ruby on Rails教程第3章(),运行以下命令后,我收到一个错误:
rails generate rspec:install
这就是我得到的错误:
Could not find addressable-2.2.8 in any of the sources
Run 'bundle install' to install missing gems.
如果我重新运行“bundle install”,我将得到以下输出:
Using rake (0
在我的rspec集成测试中,当我有如下断言时:
assert page.has_content? some_value
如果断言失败,它将显示:
MiniTest::Assertion:
Failed assertion, no message given
minitest文档说“所有断言方法都接受一条消息,如果断言失败,就会打印该消息”,但我找不到任何关于如何指定消息的示例。这些语法无效:
assert("custom fail msg") page.has_content? some_
我试图在Rails 4项目上将Rspec与capybara webkit结合使用,但由于没有正确设置capybara.default\u主机,我遇到了一个错误
webkit_服务器已正确安装并处于路径中
我已将以下宝石添加到Gemfile:
group :test do
gem 'rspec-rails', "~> 2.12"
gem 'factory_girl'
gem 'capybara', '2.0.3' # capybara-webkit works with thi
我想知道是否有一些工具可以在Julia语言中进行BDD,比如Rspec或Ruby中的Cucumber?我试图找到一些类似的工具,但我找不到类似的工具,可能是因为语言太新,或者BDD在HPC“世界”中不太流行
我知道,即使在“过时”的Fortran中,也有一些软件可以进行TDD或BDD,所以在Julia中应该有这种意义上的东西,我只是还没有找到
有人知道吗?我知道有两个测试套件:Base.test和FactCheck。应该可以将这些用于TDD,但我还没有尝试过。FactCheck可能适用于BDD,
我正在学习Railstutorial(第9章)
“删除链接”的测试第一次通过,但从下一次开始,它会出现一些错误,如:
Failures:
1) User pages index delete links as an admin user
Failure/Error: sign_in admin
Capybara::ElementNotFound:
Unable to find field "Email"
# ./spec/support/uti
在我的一个测试中,我无法使用match_数组再次匹配空数组。我有以下信息:
Failure/Error: expect(subject.custom_text_locations).to be match_array([])
expected #<RSpec::Matchers::BuiltIn::MatchArray:105810100> => #<RSpec::Matchers::BuiltIn::MatchArray:0xc9d1168 @expected=
我试图在我的视图规范中访问Desive helper方法,但没有成功。我以前在这方面看到过很多类似的问题,但似乎没有一个能具体回答我的问题,而那个回答了我的问题的人,有一个解决方案对我不起作用
这是我的rails\u helper.rb文件
RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.include FactoryGirl::Syntax::Meth
我有一个奇怪的情况,我有两个例子。我有这个
一步填写用户表单的必填字段,我只需要为一个示例scope_self执行该字段。另一方面,它不应该运行
有没有办法做到这一点
Examples:
| action |
| "scope_self" |
| "scope_new" |
使用强制步骤创建单独的场景将是一个更容易的选择。这将是一个更干净的实施
无论如何,有一种方法可以让它在相同的场景大纲中工作
将示例表一分为二。给第一个表一
我正在寻找一种方法来测试来自CanCanCan gem的消息
def my
authorize! :my_words, word, message: I18n.t("messages.login_to_add_new_word")
end
什么样的
it "sets flash message" do
expect(message???).to eq I18n.t("messages.login_to_add_new_word")
end
授权!方法会引发CanCanCan::Acc
几个月来我一直在寻找最终的答案
RSpec book根本不涉及它:
现在,我们如何处理视图规范中的局部显示
在RSpec2中
我有一个大的35K+线的意见和相关的规格,我正在尝试
升级到Rails3/RSpec2。我的观点相当广泛地使用了partials
这个问题对我来说是一个巨大的障碍
before do
view.should render_template("event_list", :locals => {:calendar => @calendar})
end
导致我的
就我个人而言,我不能让工厂女孩在铁路上工作。我创建了一个全新的应用程序。我的档案:
gem "rspec"
gem "rspec-rails"
gem "factory_girl_rails"
application.rb中的生成器如下所示:
config.generators do |g|
g.test_framework :rspec, :fixture => true, :views => false, :fixture_replacement => :
好吧,就这么定了。复习Rails教程。我们正在运行一个测试环境,以确保我们希望显示在页面上的内容能够实现。使用pages\u controller\u spec.rb文件执行此操作。这是我们通过的三个论点之一:
describe "GET 'home'" do
it "returns http success" do
get 'home'
response.should be_success
end
it "should have the righ
每次尝试运行rake spec或bundle exec rspec spec时,我都会收到一个权限被拒绝-绑定(2)错误。
跟踪:
cloud9支持规范吗?我能够在cloud9上运行mini-test、test::unit和rspec测试。
我认为您得到的错误要么是由于spork,要么是试图使用drb(带guard或其他东西)
我也试图让它工作,但我无法让spork绑定到$PORT,而且似乎不允许您绑定到任何其他端口
我也无法让警卫正常工作。它会看到文件发生了变化,但是当运行规范时,我发现了关于
每次运行rspec命令时,我都会得到一个列表,其中只列出了挂起的规范或有错误的规范,这是可以的
我还需要列出所有通过的测试。如何做到这一点
通过查看他们的CLI自述文件,我无法找到它 您可以尝试“文档格式”
谢谢,但是当我使用rspec-fd时,我确实看到所有rails服务器都在规范名称之间登录。有没有办法摆脱日志,这样我就只能得到规格的状态?可能是重复的
$ rspec -fd spec/
$ rspec --help
-f, --format FORMATTER Cho
标签: Rspec
railstutorial.org
我试图理解清单6.18(rails 3.2)中的唯一性约束测试
“此处的方法是使用与@user相同的电子邮件地址创建用户,我们使用@user.dup来完成此操作,它创建了具有相同属性的重复用户。由于我们随后保存了该用户,原始@user的电子邮件地址已存在于数据库中,因此不应有效。”
我不清楚的是,第一个用户何时何地保存到数据库?i、 e.没有对user.save的调用。汽车魔术在哪里
谢谢
KA不会保存第一个用户。测试设置初始化(但不保存)用户,然后复制并保存副本。然后它尝试验证原始(未保存)用
每次运行规范时,RSpec都会打印运行选项:include{:focus=>true}
我已经知道运行选项是什么,那么有没有办法抑制此输出?现在有一个if-you设置config.silence\u filter\u announcements=true如下:
RSpec.configure do |c|
c.filter_run_including :foo => :bar
c.silence_filter_announcements = true
end
@Landon
我的服务层(app/services/article_service.rb)中有ArticleService模块,我想测试这个模块和方法。以下是rspec代码。结果是错误的。我想原因是测试没有调用ArticleService.create,但我不知道怎么做
module ArticleService
module_function
def create
Article.update(publish: 1)
end
end
是否可以在Rspec中组合用于全文搜索和标记的命令行选项?比如rspec spec-e User-t buggy等。
如果我只是把它放在彼此后面,它总是做一件事——有什么诀窍或解决办法吗
(产出)
运行选项:包括{:full\u description=>/selftest/}?)目前这是不可能的,必须等待rspec的未来版本
我想知道如何连接前端BDD(即Jasmine)和后端BDD(rspec、cucumber)。
这两者如何关联并形成一个连贯的BDD循环?
这个周期的正确步骤是什么?要创建一个内聚的BDD周期,您需要使用“由外而内”的开发技术,然后采取“伪造直到成功”的方法,即在编写具体实现之前使用模拟对象
假设您有以下情况:
Given I am on the home screen
When I submit valid log-in credentials
Then I am navigated to th
在所有请求到example.com的规范中,我想忽略URI中关于请求匹配器的尾随id。像这样的
VCR.configure do |c|
# omitted
c.register_request_matcher :uri_ignoring_trailing_id do |request_1, request_2|
# omitted
end
c.before_http_request(lambda { |req| req.uri =~ /example.com/ })
今天早些时候,我开始遇到一个奇怪的RSpec问题,大约5%的测试都没有通过。主要的共同点是,大多数失败都与测试计算类内实例总数的情况有关,例如expectObject.count。错误类型如下所示:
预期:2
得到:10
我想深入了解单个测试的细节,看看发生了什么。我发现每次运行测试时,即使我注释掉了测试的每个部分,特定对象的实例数也会增加一个。这就像每次运行测试时,测试数据库都在无缘无故地实例化一个对象。我检查了我的rspec配置,以确保事务装置设置为true。我一直在寻找一个问题的答案,为什
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 26 页