标签: Rspec
capybararspec2rspec-rails
我有一个Ruby on Rails 3.2.6应用程序,我使用下面的代码编写了应用程序中链接的测试:
visit about_path
click_link "Frequently Asked Questions (FAQ)"
page.should have_selector 'title', text: full_title('Frequently Asked Questions (FAQ)')
我在整个应用程序中都有链接,人们可以在Twitter和Facebook上关注我们。当他们点击这
我对rake运行RSpec有一个奇怪的问题。RSpec本身工作正常,但当使用此耙子通过耙运行时:
require 'rubocop/rake_task'
require 'rspec/core/rake_task'
RuboCop::RakeTask.new(:cop)
RSpec::Core::RakeTask.new(:spec)
task default: [:cop, :spec]
它生成如下输出:
失败:
1) 公共访问自行车扩展底座的成员无法释放,因为无可用
失败/错误:预期{
标签: Rspec
integration-testingcapybara
因此,我正在构建一个集成,包括在页面上提交表单。但是由于某种原因,在post请求期间数据库连接断开了吗?或者服务器没有访问同一个数据库
发生的事情是我得到了一个社区的页面,但是当我在该页面上提交表单时,处理帖子的控制器对该社区一无所知
我已经试过关闭防伪保护。这些连接似乎是相同的(根据AR:Base.connection)
我正在使用集成capybara+rspec的共享连接池方法
(ActiveRecord::Base.shared_connection=ActiveRecord::Base.
标签: Rspec
mongoidfactory-bot
好的,我现在的问题是FactoryGirl在我的测验中构建嵌入式作业,它使用mongo而不是active record。我尝试使用一个构建列表,它可以与我的活动记录模型一起使用,但是我在使用mongoid时遇到了一个问题
我可以打电话给以下人员并获得测验作业:
@quiznos.quiz_assignments.new(due_at: Time.now+ 1.day, published_at: Time.now)
但是如果我打电话
@quiznos = FactoryGirl.build(:
我正在使用padrino和rspec,我希望能够测试我编写的助手方法
我有
spec/app/controllers/sessions\u controller\u spec.rb
app/controllers/sessions\u controller.rb
app/helpers/sessions\u helper.rb
这是一个由两部分组成的问题。第一部分是我的方法甚至找不到当前用户。第二,我相信如果它被发现,它可能会抛出错误,因为会话没有被定义。但首先,为什么我要让未定义的方法成为当前
标签: Rspec
rakebundlertimecop
我有一个大型rails测试套件,我只使用了一次Timecop
it "should not include votes from today" do
assert_equal 8, @answer.todays_score
end
it "should include today's votes tomorrow" do
Timecop.travel(Date.today + 1) do
assert_equal 10, @answer.yesterdays_score
e
根据,我应该能够通过调用lookupvar访问事实
module Puppet::Parser::Functions
newfunction(:machinelist2, :type => :rvalue) do
lookupvar('operatingsystem')
end
end
在spec中使用这个函数,它返回nil
context 'something' do
let(:facts) {{:operatingsystem => 'blah'}}
i
我试图让TeamCity在我的rails应用程序上运行测试,但它没有看到rspec
rspec: command not found
我创建了一个“命令行”构建步骤,其中包含以下内容:
rspec spec/
echo '#do rspec spec/'
rspec spec/
echo '#which rspec?'
echo `which rspec`
echo '#do bundle update'
bundle update
echo
为什么只有(不推荐的)should语句对我有效?
注释掉的#expect语句失败,尽管它们完全遵循课程中的示例
require 'rails_helper'
describe Vote do
describe "validations" do
describe 'value validation' do
it "only allows -1 or 1 as values" do
vgood1 = Vote.create :value => 1
我的spec_助手具有以下标准:
RSpec.configure do |config|
config.filter_run focus: true
config.run_all_when_everything_filtered = true
end
当我在做一些事情时,这很好,但是如果我不小心提交了一个重点规范,我希望我的CI构建失败
有什么想法吗?以下是建议。这对我来说很好
RSpec.configure do |config|
if ENV['CI']
config.
我有一些代码添加到rspecrails默认添加到的回调中
我的代码看起来像:
module Test
module Unit
class TestCase
append_before(:each) do
Test::Unit::AfterFixturesLoaded.custom_stuff1
end
append_after(:each) do
Test::Unit::AfterFixturesLoaded.cu
背景:
我有一个木偶模板,它在渲染时处理处理器事实的count子组件。这一事实存在于我所有的客户身上
事实的用例位于对其执行十进制数学的模板行中,例如:MyConfigVar=在某些.erb文件中
我想:
将模板化代码部署到生产主机。
为我的模板编写健壮的单元测试,这样我就可以确保它能够正确地呈现,给出各种合理的事实值。
我所尝试的:
首先,我试着用sigils:。如果我用rspecpuble模拟facts={:processors=>{:count=>10}之类的东西,我的测试都通过了。清单应
我有一个测试助手,如果它被启用了javascript的特性规范使用,那么它需要有不同的行为
我有一个测试,比如:
it 'test something', js: true do
... (code that uses javascript)
special_method
end
还有一个这样的测试
it 'test something else' do
... (code that does not use javascript)
special_method
end
标签: Rspec
rspec-railsrspec3
是否有一种方法可以触发RSpec测试用例集合,但不运行测试
在Python的pytest中,等价物是附加一个--collect only开关
我的用例:我想运行一个钩子来验证关于测试用例的一些元数据,比如强制执行一个强制标记模式,并且我想将这个验证检查作为PR检查包括在内。问题是,我并不真的希望测试套件运行,但我只想验证测试用例元数据
任何帮助都将不胜感激,并提前感谢您 似乎没有内置的方法来进行收集。相反,我不得不在我的spec\u助手中添加以下内容。基本上,如果将环境变量CONTEXT=val
我的问题是基于这一点的:同时也基于这些指导原则:
所以,如果每个“it”块只有一个期望值,那么如果我将模拟期望值和价值期望值混合在一起呢
例如:
describe Foo, "#bar" do
before :all do
@baz = mock(Baz)
@foo = Foo.new(@baz)
end
it "should call waka on @baz" do
@baz.should_receive(:waka)
end
it "should
我是RSpec的新手,我有一个测试场景,其中我写道:
my_object.should_not be_valid
它工作正常。但是,我想测试模型的特定属性是否无效。这是一种现成的RSpec行为吗?我可以写一些类似于:
my_object.should_not be_valid(:name)
my_object.should_not be_valid(:name => 1)
理想情况下,我也希望能够测试错误的数量,例如:
my_object.should_not be_valid(:n
我们正在从Ant运行rspec,因此进度格式化程序实际上不是一个选项,因为它不会给出实时结果
所以我们运行的rspec是这样的:
CI_REPORTS=$REPORTDIR/rspec
rspec src/test/rspec \
--require ci/reporter/rake/rspec_loader \
--format documentation \
-
标签: Rspec
factory-botfactories
我正在使用FactoryGirl编写RSpec。它一直在犯错误
NoMethodError: undefined method `saved?' for nil:NilClass
我认为发生此错误是因为对象C没有正确初始化。在这里,我定义了三个模型A、B和C,其中模型C依赖于其他两个模型。我在factory.rb中没有按特定顺序编写它们,即首先编写C,然后编写A和B。我想知道是否必须根据依赖关系按特定顺序定义它们。谢谢。在FactoryGirl定义中,对于传入的块中的任何代码,定义顺序都
嗯-有史以来最令人困惑的验证错误,考虑到我甚至没有使用“友好”一词,我的角色模型看起来是这样的:
class Role < ActiveRecord::Base
validates :role, presence: true
extend FriendlyId
friendly_id :role, use: [:slugged, :history]
end
最后,让我们编写一个规范,并确保我们可以创建角色:
context "Validation checks" do
大家好,我是rspec的新手,有人能告诉我这两者的区别吗
期望值和匹配者这让我很困惑
我已经看了一些例子,但无法理解,有人能帮我吗这些概念在文档中解释得很好:
如果您熟悉其他测试框架,那么期望就像断言一样工作。匹配器在预期范围内用于获取要测试的值。这些概念在文档中得到了很好的解释:
如果您熟悉其他测试框架,那么期望就像断言一样工作。匹配器在预期范围内用于获取要测试的值。@farooq您是否遵循了其中一个链接?我不是想唠叨,我真的很好奇,你是否觉得文档中的示例不足,是否值得创建一个实质性的
当我运行RSpec时,我得到错误不能复制NilClass
我尝试添加了不可加载的,但没有解决它
我认为这是导致错误的函数:
class User < ActiveRecord::Base
before_save :create_permalink
validates :username, presence: true, length: { maximum: 50, minimum: 3 },
uniqueness: { cas
我已经定义了以下SuckerPunch作业:
class MyWorker
include SuckerPunch::Job
def perform(account)
@account = account
end
def params
@account
end
end
我想用RSpec测试它:
describe MyWorker do
before { subject.perform("test@mail.nl") }
its(:params)
我想知道Rspec中的命令式与声明式步骤是关于什么的
以下是Rspec手册中的示例代码:
Scenario: transfer money (declarative)
Given I have $100 in checking
And I have $20 in savings
When I transfer $15 from checking to savings
Then I should have $85 in checking
And I should have $35 in savin
下面是一个场景,我想检查我页面上的iframe以确保某些内容存在。我试着:
within_frame 'my_frame_name' do
find('#id_of_a_div').value should match 'match me please'
end
尝试了几个变体,但都不起作用
有什么建议吗 好问题!有人吗?你能提供更多细节吗?你用的是什么密码?抛出异常?您尝试过的变体?我认为OP的问题是因为值和应该之间没有点。
within_frame 'my_frame_name'
出于好奇,有没有一种方法可以让rspec在失败消息中的“it”块的文本之前打印出上下文块中的文本?例如:
describe Array do
context "when created with new" do
it "is empty" do
array = Array.new
array << 1 # trigger a failure to demonstrate the message
array.should be_empty
标签: Rspec
capybararspec-railscapybara-webkit
我目前正在修改一些规范,并找到了一种语法,似乎没有人知道它代表什么
在Capybara套件中,多次出现以下情况:
在(:css,#foo')do中
通过删除:css,我发现这在功能上与(“#foo”)do中的相同
有区别吗?还有哪些符号可以作为第一个参数传递到内部?在跟随@Andrey Botalov的链接之后,我发现这解释了将哪种选择器输入到内部块中
在我的例子中,Capybara.default\u选择器被设置为:css,因此:css是默认值。列出的唯一其他选项是:xpath我认为这只是重复
当我在代码中遇到错误时,我遇到了如何使Desive密码重置测试正常工作的问题:
require 'spec_helper'
describe "Passwords" do
describe "Forgot Password" do
let(:user) { FactoryGirl.create(:user) }
it 'should reset a users password' do
reset_mailer
我在使用gem install rspec命令时收到一个错误,我是编程新手,似乎出了什么问题我都不知道。非常感谢您的任何建议
Ruby-v
ruby 1.8.7(2012-02-08 patchlevel 358)[universal-darwin12.0]
RVM-v
rvm 1.21.20(稳定)
问题:我是否键入gem install rspec,gem-v,哪个gem,gem列表下面是消息:
/System/Library/Frameworks/Ruby.framework/Versio
标签: Rspec
activemodellint
对于默认的Rails,您可以添加所谓的来查看您的模型是否符合ActiveModel的部分
我想在我的Rspec测试中称之为这些,或其等价物
我不想测试确切的行为:lint只测试特定接口存在的规范。我只想说明接口是否存在
我宁愿不要。仅仅测试模块是否包含与测试接口是否存在并不完全相同
在rspec示例中运行并包含Rails核心ActiveModel::Lint::Tests有什么诀窍吗?是否有专门为运行此类lint测试的Rspec构建的替代方案
一些背景:
我正在构建的模型不是继承自Activ
我是Ruby和RSpec的新手,做了一些研究,发现有几种方法可以从在线帖子中进行数据驱动的枚举测试,但它们不像完整的教程那样涉及到很多细节。所以在我再次详细阅读这些在线文章之前,我想我应该先问一下这里
这里的设置是基于使用RSpec的标准简单方法(定义了descripe&it块,而不是仅导入RSpec的部分来实现期望)。然后,我尝试将数据驱动能力添加到it中:
require 'rspec'
require 'csv'
describe "test suite name" do
befor
标签: Rspec
factory-botrspec-rails
我想用railsrspecgem测试我的rails控制器。我已经为测试设置了一切(运行了所有rspec命令,安装rspec-gaurd等等),但是我不确定如何创建一个假的数据来传递给我的控制器。我选择工厂女孩轨道的原因?(如果这是错误的宝石或有更好的东西,我需要知道,请让我知道)。我的控制器参数应如下所示:
{
"name": "example",
"job" : "TheJob"
"config": "{THIS IS A HASH}"
}
我的工厂是这样的:
这就是我的rsp
是否可以修改现有的let变量,例如将条目添加到哈希:
describe 'my spec' do
let(:var) { { a: 1, b: 2 } }
let(:foo) { bar(var) }
context 'when c is defined' do
let(:var) { var.merge c: 3 } # This does not work because it will be evaluated recursively
# ... actua
我在rspec中添加了调试,如下代码所示
code :
it 'sample testing' do
byebug
post: create, user:{id:1, name:'sample_user'} , format: 'json'
expect('sample_Scenario')
end
当我运行上面的rspec时,正如预期的那样,它在byebug处中断,但我无法检查或获取信息。控制台将像这样
(byebug) tester
(byebug) l
(by
我正在从水豚网络工具包转换到恶灵/幻影。我遇到了一个计时问题,我已经确定了哪一行代码需要预热时间,但我无法确定这是为什么或者如何解决它
我有一个225行的规范文件和几十个测试。在任何给定的测试运行中,其中一个或两个将始终失败。它可以是其中的任何一个,这是不一致的
此前块适用于所有测试。我已经注释了代码来解释这种情况
before do
# --> Create several objects using factory girl
# --> stub some methods
我看了一下,它清楚地说:
备注:serverspec测试套件旨在针对单个计算机(或docker容器)运行。换句话说,您不应该试图发出一个rspec命令来获取和运行针对多台机器或容器的测试。您需要为它们中的每一个发出一个rspec命令
所以我可以对每台服务器进行测试,这在某些情况下是很好的。但问题在于:我的微服务体系结构有一个自动发现服务,因此一些服务在查询后是已知的。有什么项目可以表达这一点吗?我知道我可以使用ruby(或者python,如果我选择的话)或其他工具
与Concur和servers
我需要延长@页面上的等待时间。请运行\u asset,因为完成此过程可能需要30秒以上的时间。所以我找到了Watir.default\u time并将其添加到我的代码中。当我运行测试时,它仍然失败,并显示与以前相同的错误:
失败/错误:@page.run\u资产
Selenium::WebDriver::Error::ScriptTimeOutError:
脚本超时:30秒内未收到结果
我尝试实现以下代码,但它显示了相同的错误
it 'expects table action to succee
您将如何使用rSpec在Rails 3中设计存根。我有一个userscoontroller和一个User模型。目前,这两项都与Desive有关,我正在编写控制器规范,我的期望真的很难实现,因为Desive登录确实干扰了工作
任何事情都会有帮助。你可以试着模仿Desive所依赖的底层warden()对象,这里有一个链接,指向一些关于如何使用RSpec实现这一点的详细信息:(条目还包括一些其他主题,你想要的解决方案在页面底部。)我发现现在做这件事很容易。rspec2和Desive存在问题,但现在已解
标签: Rspec
rakecode-coveragespecsrcov
我正在运行内置的rake任务来生成rcov报告:
rake规范:rcov
这将在我的coverage目录中生成文件,但我希望看到一些聚合统计数据输出到命令控制台
总覆盖率和测试行数的格式与运行rake stats时得到的格式类似
有人知道这样做的方法吗?我在我的rcov.opts中添加了-text summary选项,它输出了我需要的数据
我试图在rspec测试中使用FactoryGirl函数create和build,而不是每次都指定FactoryGirl命名空间:create,而不是FactoryGirl::create
我想我可以通过如下扩展FactoryGirl来做到这一点,但我总是得到一个命名错误
RSpec.configure do |c|
c.extend FactoryGirl
end
describe 'my thing' do
it 'should be ok' do
obj = create
我对访问两个表单的规范有一个问题,这两个表单上都有相同字段的电子邮件。如果我没有手动睡眠,水豚似乎会在测试的第二部分的第一次访问中找到电子邮件字段
# visit the first form and fill out a subscription
visit new_front_form_subscription_path(@web_form_1.id)
fill_in "Email", with: "subscriber@example.com"
fi
我正在尝试测试基本sinatra应用程序的路由,但由于csrf保护错误,我的测试请求失败Rack::csrf::InvalidCsrfToken。
这些路由通常由客户端应用程序命中,该应用程序通过标记包含csrf令牌。
我曾尝试通过Rack::csrf.token访问csrf令牌,但我无法访问env(或者至少我不知道如何在我的rpsec测试中访问env),并且没有获得成功
app.rb
use Rack::Csrf, raise: true
put '/api/events/:id' do
标签: Rspec
database-cleaneracts-as-audited
我遇到了一个奇怪的无限递归,它只出现在Rspec测试中。奇怪的是,这是因为在我的用户对象中添加了审计,尽管它失败的规范实际上与我的用户对象无关
这是它失败的测试。像所有无限递归一样,我没有得到实际的stracktrace,只有堆栈级别太深的故障:
1) Spree::CheckoutController order in address state #update payment to complete step should set the address id on a newly cre
我有一个我正在尝试测试的方法:
def build
return if !cookies["__utmz"] && !cookies["__utma"]
binding.pry
@data = GaCookieParser::GaCookieParser.new(
utmz: cookies["__utmz"],
utma: cookies["__utma"]
)
build_utmz
build_utma
在.fixtures.yml中,有从公共库下载的模块,如以下示例中的stdlib和concat:
fixtures:
forge_modules:
stdlib: puppetlabs/stdlib
concat: puppetlabs/concat
每当运行rspec puppet测试时,都需要下载这些模块。测试完成后,它们也会被删除
如果所有测试都完全运行,这是很好的。但是,如果有需要单独运行的失败测试,则这些模块不可用。我必须同时运行所有测试(100+),这样就可以下
我正在寻找片状(闪烁)规格,并运行rsspect-bisect--seed 19818
第一批检查似乎很有希望:
Running suite to find failures... (1 minute 6.68 seconds)
- Failing examples (6) - Failure appears to be order-dependent
但接下来会发生这样的情况:
Round 1: bisecting over non-failing examples 1-299
Bisec
当我使用任何基本匹配器运行这个简单的RSpec时,它都不起作用:
文件:
使用的任何匹配器的输出如下所示:
/private/tmp/rspec_matcher_test/matcher_spec.rb:3:in `block in <top (required)>': undefined local variable or method `be_true' for #<Class:0x007fdcd60ccb40> (NameError)
from /Users
我正在为rails中的Capyabara编写规范。在这里,我找到了一篇在功能规范之间共享通用代码的文章。链接:
但当我在rails规范中使用其模块方法“sign_-in”时,它给出了错误“uninitialized constant sign_-in”
如何在rspec中正确导入此帮助器模块?谢谢。可以使用RSpec.configure包含助手方法
假设希望所有示例都可以使用帮助器方法,请将以下内容添加到等级库帮助器(或至少在示例组之外的某个位置):
有关更多示例,例如仅将helper方法添加到
以下是我正在测试的代码:
before_action :set_location, only: [:show]
def create
@location = Location.new( location_parameters )
if @location.save
redirect_to location_path(@location.id)
else
render action: :new, status: 422
end
en
标签: Rspec
factory-botrspec-rails
我已经安装了FactoryBot,并尝试将其与RSpec一起使用
场景“用户登录”执行
创建:用户,电子邮件:'test@example.com,密码:“testpassword”
访问“/用户/登录”
在“电子邮件”中填写:'test@example.com'
在“密码”中填写:“testpassword”
结束
我得到了以下错误
失败/错误:创建:用户,电子邮件:'test@example.com,密码:“testpassword”
命名错误:
未定义的方法“create”#
在我的例子中
当我使用kitchen verify运行以下失败测试时
describe command ('cat example.txt') do
its(:stdout) { should contain('param1 50') }
its(:stdout) { should contain('param2 77') }
end
我得到以下故障跟踪:
Command "cat example.txt"
stdout
should contain "param1
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 26 页