标签: Rspec
capybaraakephalos
我使用Rails 3、Capybara 0.4.0和Akephalos(https://github.com/sorentwo/akephalos)SeleniumWebDriver和RSpec2。我使用Ruby1.9
我有以下规格:
scenario "Create a new Group course with complex name" do
school = School.make!
switch_to_subdomain(school)
cour
当我的规格出现错误时,我会收到如下消息:
Vendor should reject duplicate names
Failure/Error: user_with_duplicate_email.should_not be_valid
expected valid? to return false, got true
# /home/kevin/.rvm/gems/ruby-1.9.2-p136@rails3tutorial/gems/rspec-expectat
Ruby新手正在努力掌握rspec、rails和Cumber
我不确定为什么会返回以下错误:
1) User can be found by username
Failure/Error: user.should_not be_valid
NoMethodError:
undefined method `valid?' for nil:NilClass
# ./spec/models/user_spec.rb:26:in `block (2 levels) in <top
TL;DR:当我运行zeus rspec spec/时,我的Figaro变量没有设置
标题大致解释了这个问题,但我会详细说明
在Rails 4应用程序中,我使用存储特定于环境的配置,例如Rails秘密令牌(Rails.configuration.secret\u key\u base)。这本身就行。我还使用预加载我的Rails配置,这也很有用
然而,当组合并运行我的RSpec规范时(通过zeusrspec规范/),我的Rails秘密令牌被删除。当然,这会输出一个弃用警告,然后出错:
DEPRE
我正在为Rails编写一个gem,其中包括一个用于创建模型的生成器。在某些情况下,生成器应该调用自己,并使用generate方法来实现这一点。这在实际使用时效果很好
我正在使用RSpec 3.2和generator_spec来尝试和测试此功能,但作为一个gem,当它到达generate调用时,它会抱怨Rails不存在:
/path/to/ruby: No such file or directory -- bin/rails (LoadError)
p>所以我一直在尝试生成发电机生成方法,使
我正在尝试在Rails应用程序中使用Rails引擎
rails引擎使用一个名为spin.js的gem
在我的rails应用程序中,我的spec\u helper文件中包含了包含引擎的代码(这是一个gem)
当我运行rspec时,出现以下错误:
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/spinjs-rails-1.4/lib/spinjs
-rails/engine.rb:2:in `<module:Spinjs>':
我有一门伐木课。我想测试一下,在函数内部,记录器将收到一个带有foo参数的log调用
expect(Logger).to receive(:log).with("foo")
Bar.foo()
然而,在此期间,一些模型回调还将调用Logger.log(“euu”)、Logger.log(“arr”)、Logger.log(“hmm”)和其他许多函数。Rspec似乎失败了,因为首先使用一些其他参数调用了log
我只关心log(“foo”)被调用一次。有没有办法进行这种测试?这种方法是允许调用lo
在rspec puppet中是否有为参数动态赋值的选项
下面是我的rspec木偶测试用例示例。现在,我已经硬编码了所有FQDN和主机名详细信息
是否可以动态分配这些值
let :facts do
{
:fqdn => 'puppet.example.com',
:hostname => 'puppet',
:ipaddress => 'xxx.yy.ee.zzz'
}
end
it do
should contain_host('pup
给定一个引发异常的简单Rails邮件程序,如何编写一个rspec规范来确认引发了异常
# status_mailer.rb
...
def simple_message(addr, subject, msg_text)
raise "Foo"
end
...
及
给出了结果:
expected Exception with "wtf" but nothing was raised
但是,很明显,每当调用mailer方法时,它确实会引发“Foo”
(为了解决这个问题,这
当我试着运行chef exec rspec时,我总是感到
The system cannot find the path specified
C:\opscode\chefdk\bin在我的系统路径中。我正在使用Windows7作为我的工作站。我不确定它要寻找哪条路?
我在D:驱动器上安装了chefdk,而不是C:。我最好的猜测是,在某些地方,C:\是硬编码的。chef的大多数综合包都是硬编码到默认安装位置的,以避免与system ruby和其他东西发生冲突
在C:\drive上重新安装che
我有使用session的sinatra应用程序,如何测试使用session的页面
I使用Rspec+sinatra
Tks与所有其他页面一样
你需要澄清你的问题。测试会话有什么问题。如果问题是用户需要登录,则可以在spec文件中使用类似以下内容:
before :each do
post "/login", {:username => "myuser", :password => "mypass"}
end
它将在每次测试之前让您登录。我只能通过禁用测试环境的会话来让它工作。这
标签: Rspec
controllercancanrspec-rails
我正在从事一个rails项目,其中我使用CanCan来授权我的资源。当用户未登录并尝试提交“对话”(通过ajax表单提交)时,CanCan会正确地发出401,并将其{“status”:“error”,“message”:“您必须登录才能这样做!”作为响应(我已使用firebug在浏览器中验证了这一点)。但是,在我的测试中,得到的是302响应代码,而不是401:
class TalksController < ApplicationController
authorize_resourc
所以我有一个创建文件的命令,希望在命令完成后自动打开文件。。。我试过这个:
start /b /wait rspec spec --drb --format html --out doc/rspec_out.html
echo DONE
start doc/rspec_out.html
但是一旦第一个命令完成,第二个命令就不会运行了(我看不到DONE)
我做错了什么
谢谢,如果rspec是一个批处理文件,以下任一项都会有所帮助:
在rspec脚本的末尾(退出点)添加EXIT命令。
像这样运行第
我想从以下步骤附加一个文件:
When /^I attach an image/ do
page.attach_file("Image", File.join(fixture_path, "green_small.jpg"))
end
出于某种原因,这会导致/home/xxx/test/fixtures/green_small.jpg。在某些地方,fixture_路径的默认值是cucumber中的test/fixtures
我使用的是rspec,因此设备的路径应该是spec/fixture
开始对cucumber使用rspec断言,我怀疑哪种方法可以进行字符串比较。我尝试了以下4种方法,它们似乎都产生了相同的结果,所以我想知道其中一种方法是否比其他方法更好
那么,解释这四种方法之间的区别容易吗?也许举个例子
page.first('div#navigation a').text.should == 'Radio')
page.first('div#navigation a').text.should eq('Radio')
page.first('div#navigation a'
标签: Rspec
mockingrspec-railsstubbing
我是rspec的新手,嘲笑和嘲弄。我慢慢地开始理解和理解孤立测试和模拟/存根的概念。我有一个基本问题,我认为通过代码更容易解释:
class NewsItem < ActiveRecord::Base
...
scope :ordered, order("created_at DESC")
...
end
我无法理解如何将上述测试转换为模拟和存根。这是第一次尝试,但显然我误解了一些核心概念
xit "should have an ordered method to retri
我在代码中多次调用File.expand_path(Rails.root)
为了进行测试,我在spec/support中创建了以下配置
RSpec.configure do |config|
config.before(:each) do
File.stub(:expand_path).and_return("spec/fs")
end
end
因此,每个对File.expand_路径的请求都返回“spec/fs/,而不是“/home/user/”
当我在rails 3上时,它
有人能给我解释一下吗
describe 'test some stuff' do
let (:dude) {"where's my var"}
let (:container) do {} end
it 'does some stuff' do
puts dude
container[:dude] = dude
puts container
end
it 'does some other stuff' do
puts dude
p
标签: Rspec
watir-webdriverrspec2
我有一个测试项目,其中有多个IT块。一切都很顺利,但是,当我运行rspec测试时,我没有在终端上的it块中获取文本。相反,我在终端上得到的只是绿点
有人能建议如何在我的终端上获得它吗
这是rspec gems版本
*本地宝石*
rspec(3.3.0)
rspec核心(3.3.1)
rspec期望值(3.3.0)
rspec模拟(3.3.1)
rspec支持(3.3.0)为了简洁起见,只需运行rspec--format=documentation或只运行rspec-fd
您可以使用rspec-
假设我的项目中有四个等级库文件:
spec/foo/foo_one_spec.rb
spec/foo/foo_two_spec.rb
spec/baz/baz_one_spec.rb
spec/baz/baz_two_spec.rb
如果当前规范文件不在baz目录中,我如何配置规范文件以包含特定模块
下面是一些伪代码来说明:
module Moddy
extend RSpec::SharedContext
let(:message){ 'hello' }
before{
我有一个从s3获取文件的方法
def self.fetch_file(file_name)
s3 = Aws::S3::Client.new
s3.get_object(bucket:'myBucket', key: file_name)
end
然后我有一个调用fetch_file方法的方法
def self.import_file(file_name)
response = fetch_file(file_name)
.. do some staff
我想测试im
我有一堆重复的代码来操作Puppet Catalog对象(注意重复的content=行):
可以看到,我已经将一个长查询移动到before(:each)块中,并将其保存在一个实例变量中。这使得它在it块中可用
我不明白的是如何为content=行定义一个方法,比如:
def content(file_name)
catalogue.resource('file', file_name).send(:parameters)[:content]
end
如果我知道如何做到这一点,我可以清理这个
标签: Rspec
ruby-on-rails-5rails-activerecord
好心的是,我试图在rails 5中验证模型属性的长度,但是当我在控制台中检查验证时,我收到了两次验证消息。例如,这是模型中的验证代码:
validates_length_of :title, minimum: 2, maximum: 100
当我使用rails控制台创建一个标题为nil的新无效记录时
message = Message.create(sender_id: 3)
当我尝试使用:message.errors.details获取错误消息时,我得到
{:title=>[{:er
我正试图从实用程序员网站上学习rspec/cucumber来编写rspec书籍。到目前为止,所有的例子都有效,我认为我做的每件事都是正确的。然而,我不断得到以下错误
cumber功能/codebreaker\u开始游戏。功能
~ │没有要加载的这样的文件--codebreaker(LoadError)
我知道codebreaker.rb文件就在那里,它有正确的内容。我
我正在尝试将一个旧的(休眠1年)项目从Rails3.1和RSpec2.7升级到Rails3.2和RSpec2.12
最初升级到Rails3.2的过程很顺利,应用程序也正常工作,但是在Rspec下运行测试产生了很多警告:
DEPRECATION WARNING: The InstanceMethods module inside ActiveSupport::Concern
will be no longer included automatically. Please define insta
标签: Rspec
capybaracapybara-webkit
Im目前使用capybara/rspec来测试div是否不可见(display:none),但是如果样式是在CSS文件中定义的,而不是直接在页面中定义的,那么它似乎总是返回true
visit "http://#{host}/"
page.find('#sort-by').should_not be_visible
这是webkit驱动程序的问题吗?我注意到在#visible?的文档中,他们注意到结果可能非常适合CSS支持
在更高版本的Capybara/webkit中是否有进一步的支持?我们已
标签: Rspec
factory-botfaker
我使用Factory Girl和Faker创建独特的测试用户。
用户模型在电子邮件上具有唯一性验证
如果我嵌套两个级别的descripe块,那么一些测试将失败,因为存在重复的电子邮件。
如果我不嵌套描述块,那么所有工厂调用都返回唯一用户,测试通过
为什么Faker在第一个场景中会生成重复的电子邮件
#工厂/user.rb
#有骗子的简易工厂
工厂女孩
工厂:学生,班级:用户
first_name{Faker::name.first_name}
姓氏{Faker::name.last_name}
我在我的user\u pages\u spec.rb文件上实施了适当的规范测试:
require 'spec_helper'
describe "User pages" do
subject { page }
describe "profile page" do
let(:user) { FactoryGirl.create(:user) }
before { visit user_path(user) }
it { sho
标签: Rspec
factory-botfixture
我正在用rspec测试CSV上传程序,我在/spec/fixtures中保存了一个测试文件,我用fixture\u file\u upload将该文件拉入测试:
let(:file) do
fixture_file_upload(
Rails.root.join("spec/fixtures/chargeback_test.csv"),
"text/csv"
)
end
这是可行的,但我在每个规范中都有文件路径。我想通过将其放入工厂来干燥我的代码,但我很难让Factor
我正在测试一个将本地存储用于用户数据的应用程序。在我的场景之后,我使用命令“page.execute_”脚本(“window.localStorage.clear()”)清除本地存储。这是为了在下一个场景中,应用程序的状态处于干净状态,并且没有上一个测试遗留的任何用户数据
当所有测试都通过并且达到最后一步(清除本地存储步骤)时,这种方法可以正常工作。但是,如果我的测试在测试过程中的某个点失败,则不会执行此命令(作为最后一步),这会导致下一个场景出现问题,因为仍有来自上一个失败场景的数据存储
我曾
该测试检查由generate_game方法创建的tic-tac趾板是否确实有三个子阵列,每个子阵列有三个值。但是我可以用一行来表达这一点吗,就像我在评论行中尝试的那样
it "should have three rows of three squares each" do
# expect([[_,_,_], [_,_,_], [_,_,_]] === generate_game).to_be true
game = generate_game
expect(g
假设我有这个代码:
Lollercoaster.lmao { 'this is fun' }
如何测试该块的评估?换句话说,我想做这样的事情:
expect(Lollercoaster).to have_received(:lmao).with('this is fun')
但这显然不起作用,因为没有任何论据被发送到lmao方法
这些文档将此作为一个示例:
allow(dbl).to receive(:foo) { |&block| block.call(14) }
但当我尝试
标签: Rspec
capybararspec-railsdatabase-cleaner
我不太确定确切的问题是什么,但是Avdi Grimm建议的database_cleaner用法示例现在似乎不再适用,取而代之的是database_cleaner自述文件中的示例。这两个示例都已将事务装置设置为false
以下是Avdi Grimm的例子:
下面是database_cleaner中显示的工作示例:
唯一不同的是截断策略设置。IIRC第二个将对:js标记的任何非nil/false值使用截断,第一个将仅在:js标记===true时使用截断。即使我将第一个上的:js=>true更改为:j
标签: Rspec
capybaracapybara-webkit
我是RSpec的新手,刚刚开始测试一些东西
我有一个带有“remote:true”的表单,我想为此编写一个规范案例
.row
.col-md-offset-4.col-md-4.col-sm-offset-3.col-sm-6
= form_for @reading, html: {class: 'form-inline'}, remote: true do |f|
#error_box
.row
.col-md-9
.input-grou
标签: Rspec
deviserspec-railsactioncable
轨道5.2
我有以下ApplicationTable::Connection ruby文件:
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
self.current_user = find_verified_user
end
private
def
我正在为Chef编写自定义资源。该资源用于设置sysctl值。我基本上使用的是Chef sysctl代码,并对其进行了一些限制。我们不信任公司的所有用户:P
我试图将大部分代码放在库帮助器模块中,以便更轻松地测试代码。我不确定这是否是最佳做法。如果这是不好的做法,请告诉我
无论如何,我遇到的问题是尝试测试我的库代码。每当我试图模拟shell_out命令时,总会出现以下错误
1) Sysctl::Helpers.set_sysctl_param
Failure/Error: subjec
可能重复:
从不同的wiki页面中,我们可以看到:
RSpec是Ruby编程语言的行为驱动开发(BDD)框架,灵感来自JBehave
Cucumber是一种将纯文本功能描述作为自动测试执行的工具
因此,您可以将Cucumber视为将纯文本转换为可执行测试的工具。这些测试可以写在例如RSpec中
但是RSpec也可以单独使用,因为它本身就是一个BDD框架。规范不是用简单的英语表达,而是用Ruby代码表达。从不同的wiki页面我们可以看到:
RSpec是Ruby编程语言的行为驱动开发(BDD
对于决定侧边栏行为的控制器,我需要调用几个URL;侧边栏将根据其显示的页面更改(a.o)
describe SidebarController do
before(:each) do
@sidebar = SidebarController.new
end
it 'should return :jobseekers for root_path' do
get(root_url)
@sidebar.section(root_path).should eq :jo
标签: Rspec
rspec2rspec-rails
我正在开发Rails 3.1.1、Ruby 1.9.2,并使用Rspec2进行测试。
插入辅助对象不起作用
users\u helper\u spec.rb
require 'spec_helper'
describe UsersHelper do
describe 'test' do
before do
helper.stub(:val).and_return('this is test')
end
it 'returns val' do
当我运行测试rspec时,我得到一个错误
1) Nimba::Storages DropboxStorages returns http success
Failure/Error: Unable to find matching line from backtrace
Moped::Errors::ConnectionFailure:
Could not connect to a primary node for replica set <Moped::Cluster node
我在RubyMine中有一些rspec测试,当我从RubyMine接口运行它们时,它们工作得非常完美。
但当我试图从终端运行相同的测试时,它们失败了。
我使用ruby gmail gem通过以下结构发送mail trougth gmail:
@gmail.deliver do
to current_unread_mail.reply_to
subject "Re: " + current_unread_mail.title
body reply_b
我有
/spec/spec\u helper.rb:
require 'capybara/rspec'
require 'capybara/rails'
require 'capybara/dsl'
RSpec.configure do |config|
config.fail_fast = true
config.use_instantiated_fixtures = false
config.include(Capybara, :type => :integration
我目前正在使用faker的faker::PhoneNumber.cell\u phone,唯一的问题是我有一个非常严格的e164验证,并且生成的一些数字没有通过e164解析。是否有一种优雅的方法可以伪造随机但有效的e164号码?您可以在区域设置中覆盖手机的格式,以匹配您需要的格式。格式不重要,号码的有效性很重要。换句话说,我需要生成一个可以通过e164验证的数字的东西@我也有这个问题!你有什么进展吗?@RyanRomanchuk在Faker中有很多符合特定验证要求的格式示例——这是使用Faker
我有两个例子,但我觉得里面的大部分代码都是一样的。但是,它们有点不同(记录略有不同,第二个记录中还有一个附加的断言)。我仍然是一个测试新手,所以在我前进的过程中寻找一些提示。我正在测试一个rake任务。这是我的密码:
it 'leaves one billing info for each order' do
order = FactoryGirl.create(:order)
FactoryGirl.create_list(:billing_info, 2, order_id: ord
我的测试依赖于数据库数据。我一直在使用工厂在rspec descripe块中使用before语句动态创建数据
我想把它们移到跑步的开始。在继续使用工厂的同时,有没有一种好方法可以做到这一点?是的,有几种方法可以做到这一点。默认情况下,RSpec语法
before do
end
与
before :each do
end
这意味着在每个规范之前调用before块中的代码
但是,您也可以使用:
before :all do
#...
end
它为定义它的descripe或其别名上下文块运行
对于我的Rails 4应用程序,我想测试删除课程对象是否会删除关联的章节对象
在我的课程模型中,我将关联定义如下:
has_many :chapters, dependent: :delete_all
这个很好用。但是,我不知道如何为这个级联删除编写测试
我的Rspec测试如下所示:
before do
@course = Fabricate(:course)
end
it "deletes associated chapters" do
set_current_admin
c
关于这个问题:
是否有任何地方不希望启动新的TX?(哪一个不起作用)
如果是这样,这应该是默认值
顺便说一句,这就是使用默认事务策略时,当代码的正常执行路径成功时,具有回滚的rspec测试将失败的原因
这是我的DatabaseCleaner设置。运行轨道4
RSpec.configure do |config|
config.add_setting(:seed_tables)
config.seed_tables = %w(global_options shoot_types)
c
我想使用一个around钩子在临时目录存在的情况下运行我的规范,然后清理临时目录
describe FileManipulatingClass do
around(:each) do |example|
Dir.mktmpdir do |dir|
example.run
end
end
subject { described_class.new dir }
context "given its help file exists" do
l
标签: Rspec
watir-webdriver
我尝试了以下命令来上载或打开文件,但它不起作用:
browser.file_field.set("c:/foo/bar.txt")
“c:/foo/bar.txt”
我有一个类,它对另一个对象进行命令调用,我正试图在RSpec中对此进行测试
SendWithUsInviteeMailer.send\u invite(invitee\u id)。deliver
我想这样写:
expect(SendWithUsInviteeMailer)。接收消息链(:send\u invite,:deliver)。with(invitee.id)
其中invitee.id作为参数发送给第一个方法。我如何正确地测试它?有没有一种方法可以使用消息链?我可能会存根send\u in
1 2 3 4 5 6 ...
下一页 最后一页 共 14 页