我是Rails和Rspec的新手。
我的Rspec文件未采用控制器的属性(作为实例变量)
它总是给出错误:
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.new_record?
有人能找到这个问题的解决方案吗?您的控制器方法应该是创建一个新的模型实
提到let的值在同一示例中被缓存:
使用let定义已记忆的辅助对象方法。该值将被缓存
跨同一示例中的多个调用,但不跨示例
它并没有确切地说明什么是“示例”,但我认为它是指最顶层的描述或上下文块。对吗?如果是这样的话,您能否链接到明确说明这一点的文档
在其他地方,文件注意到以下内容:
descripe方法创建一个示例组。在经过的街区内
要进行描述,可以使用描述或
上下文方法,或者您可以使用它声明示例或指定
方法
那么,“示例”是context/descripe块还是it块呢?简而言之,let值的范
标签: Rspec
rails-3-upgrade
我正在将Rails2.x应用程序转换为Rails3.x。Rails2.x项目的规范以当前所有通过的方式执行
但是,在将规范移动到Rails 3.x应用程序后,规范将消失,无法找到Rails.root+'/lib'目录中定义的基类SmsCommand::base。我试着用rspec path_to_spec、rake spec和bundle exec rspec path_to_spec运行规范,但都没有用
我担心这可能与目录嵌套有关。例如:
/spec/models/sms_commands/a
我正在寻找关于如何使用rspec和rails进行请求规范(我也看到过称为“集成测试”)的任何文档或参考资料
该页面显示了自述文件中关于“请求规范”的一个片段,这是我想要进行的测试(完整堆栈测试)
这种测试中使用的所有方法都有参考资料吗,比如如何使用fixture、cookie、会话、重定向等
实际上,上面使用的have_selector方法是否有rdoc?我还没有找到用于此的API或rdoc。也许我错过了什么
谢谢 have_选择器是Webrat的一部分:
水豚提供了更大范围的匹配器:
de
标签: Rspec
named-scopestubrspec-railsmethod-chaining
我正在制作一个Rails应用程序
控制器旧代码:
@articles = Articles.unpublished.find(complicated_conditions)
我把它改成这样:
if logged_user.has_a_specific_permission
@articles = Articles.unpublished.find(complicated_conditions)
else
@articles = Articles.unpublished.find(ano
我对共享示例的执行有异议。共享示例总是在示例列表的末尾执行。如何按顺序运行所有示例
我已经分享了示例规范,它看起来像
sharedExamples_spec.rb
shared_examples "upload jar" do |msg|
it "shared examples group" do
sleep(10)
p "hello there :2 #{msg}"
end
end
在其他规范文件中
require 'sharedExamples_spec.rb'
我与ActiveRecord、Rspec和FactoryGirl有一个香草rails 4项目
需求发生了变化,我们转而将数据存储在MongoDb中。我们正在使用MongoMapper进行模型映射
我没有从项目中删除ActiveRecord,我只是停止使用它并删除了所有ActiveRecord::基类(它们现在实现了MongoMapper模块)
我需要做什么来配置Rspec+FactoryGirl,以便所有FactoryGirl工厂都与MongoDb对话
我对Rspec和FactoryGirl假设
我有一个ReturnItem类
规格:
require 'spec_helper'
describe ReturnItem do
#is this enough?
it { should respond_to :chosen }
it { should respond_to :chosen= }
end
类别:
class ReturnItem
attr_accessor :chosen
end
这似乎有点乏味,因为几乎每个类都使用了attr\u访问器。在rspec中是否
我有一组更准确地引用一组对象而不是单个对象的示例。“他们‘应该做/成为x’”更有意义,例如:
describe ArrayElements do
they 'are ordered' do
...
end
they { should all_be_identical }
end
是否可以将RSpec 3配置为接受它们?您可以在配置RSpec时使用alias\u example\u to为它配置别名(例如在spec\u helper.rb中):
例如,您还可以使用它在以这种
我想知道如何在我的mac上设置android应用程序的应用程序路径。对于iOS,您可以下载应用程序,然后在所需功能中提供路径
我无法将android版本的应用程序下载到我的mac电脑上,但据我所知,我可以使用android emulator,然后在上面安装应用程序
那么如何设置应用程序路径呢?在Mac上下载应用程序,并在Capabilities下添加应用程序路径
例如在Ruby中
[caps]
appium-version = "1.1.0"
platformName = "Android"
p
我是厨师规范的新手,尝试在我的食谱中找出如何使用单元测试。
我已经在不同的ubuntu实例和刀子规范插件上安装了chefdkv2和v3。
创建apache_包装烹饪书后,我更改了下一个文件:
spec/spec_helper.rb
require 'chefspec'
require 'chefspec/berkshelf'
RSpec.configure do |config|
config.log_level = :debug
config.platform = 'ubuntu'
RSpec的文档提到了,它在运行时提供了最小的复制,例如
rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] --seed 1234
[1:1]位是什么意思?来自rspec--help:
****筛选/标记****
除了以下用于选择特定文件、组或组的选项之外
例如,您可以通过将行号附加到
文件名:
rspec path/to/a_spec.rb:37:87
您还可以传递方括号内的示例ID:
rspe
标签: Rspec
ruby-on-rails-5rake-task
我有一个非常简单的rake任务:
namespace :subscriptions do
desc 'Send expired subscription notifications'
task notify_trial_expired: :environment do
Subscription.where(expires_at: Date.today.all_day).each { |s| s.user.notify_trial_expired }
end
end
其中,n
我有一个用于在我的商店中创建零件产品的模块,名为ErpPartsService::Builder,通过该模块,我构建了一个助手类CategoryByaluberIDFetcher,我只在模块内部使用,而不是在其他任何地方使用。我把它放在app/services/erp\u parts\u service/builder.rb文件中
这是我的密码:
module ErpPartsService
class CategoryByLauberIdFetcher < Service # Thi
标签: Rspec
helperruby-on-rails-6
我对嵌套表单做了一个功能,当我点击链接时,它会从一个部分调用一个表单
例如:
在new.html.erb(TaskList)中,当我创建一个新的任务列表时,我可以填写任务列表的名称,如果我愿意,我可以单击一个链接(addtask)来打开任务表单。因此,我可以填写任务列表名称并插入任意数量的任务
我将在下面显示与之相关的代码:
new.html.erb(任务列表):
_task_fields.html.erb:
<%= f.label :description, 'Tarefa:', cla
下面提到的代码成功地为1个用户工作,我想为许多用户实现下面的工作代码,所以我尝试使用迭代
##### Below is the working code for 1 user #######
# user
let!(:pi_user) { FactoryBot.create(:read_only) }
# PI oauth
let!(:oauth_app_02) { FactoryBot.create(:oauth_application, owner: pi_user)
我已经使用Ruby1.9.2和RSpec2以及我的
测试套件现在正在增长,我不满意它的时间长度
他跑不动了。我用Ruby Enterprise做了一个基准测试
版本1.8.7 2011.03,运行速度比Ruby 1.9.2快得多(5倍)
这是意料之中的事还是我遗漏了什么?为了看到结果,
Gemfile和spec_helper.rb请检查要点
非常感谢您提供的任何帮助或提示。您可能希望尝试类似Spork的方法,以避免每次需要运行测试时都必须加载应用程序。我发现使用它可以节省很多时间
以下链接是一
我相信我在范围界定方面有一些问题
我有一个测试品牌资源的控制器规范文件。
在文件的开头,我测试了不同资源的访问权限
上下文块中的用户
a) 未登录
b) 非管理员用户登录-我调用自己的助手方法login\u user
c) 管理员用户登录-我调用自己的助手方法,
登录\管理\用户
那里的规格确实通过了
然后我创建另一个上下文块来测试资源的
已登录的管理员用户。
我尝试在一个before钩子中调用login\u admin\u user,正如前面的
规格
它失败了,我怀疑当前范围在before钩子
标签: Rspec
mongoidfabrication-gem
我用的是Mongoid。我有一个目标:
class Employee
include Mongoid::Document
field :name_first, type: String
field :name_last, type: String
field :name_other, type: Array, default: []
field :title, type: St
标签: Rspec
watir-webdriver
请帮助我了解为什么这只是启动浏览器,而不是加载
环境:
视窗7
32位
Firefox 20[也在8.0中试用]
已安装-Watir、Watir Webdriver、Selenium Webdriver、rspec。运行代码时,出现以下异常:
Failures:
1) outbid login should succesfully login you in the outbid.com
Failure/Error: Unable to find matching line fro
标签: Rspec
controlleractiveadmininstance-variables
我正在尝试为继承的ActiveAdmin控制器编写测试,但在检查实例变量是否正在调用方法时遇到问题。我想要的行为是调用该方法的副作用,因此我希望确保调用该方法
这是控制器:
ActiveAdmin.register User do
controller do
before_filter :get_user
def get_user
@user = User.find_by_login(params[:id])
if !@user
fl
我在一个项目上使用兔子宝石和RabbitMQ,以便多个应用程序可以执行RPC调用。我正在努力找到一种方法来使用这些调用进行集成测试。当然,我可以模拟、对象和存根一个方法来返回一些假数据,但是如果有类似于带有RabbitMQ的VCR gem的东西,那就太好了。有关于如何最好地测试bunny的指导吗?我实际上使用rspec编写了一个测试夹具,但它有点不稳定,不令人满意。为什么要费心在这样的过程中进行集成测试呢?要么你相信Bunny和RabbitMQ一起工作,要么你不相信。如果你相信它,就不要测试它。
我有一个测试:
允许(GoogleMapsService::Client.)的任何实例接收(:初始化)
我得到了警告:删除'initialize'可能会导致严重的问题,但我没有找到任何其他方法来解决这个问题
我怎样才能用另一种方式解决它,这样我就不会收到警告,或者怎样才能使警告静音
非常感谢我是说你为什么不这样做呢
allow(GoogleMapsService::Client).to receive(:new)
而不是
allow(GoogleMapsService::Client).to
标签: Rspec
sinatraponyemail-spec
我正在尝试,它说它支持小马,但我不知道如何在sinatra应用程序中测试电子邮件。自述文件中的示例显示了railsActionMailer的用法,而不是Pony
使用email_spec并不重要,因此欢迎使用sinatra中的rspec测试电子邮件的任何其他想法=)我以前没有使用过email_spec,但它看起来很酷
您可以在规范文件中看到我如何测试小马,这可能适用于您的情况:
此外,您还可以通过:test传递消息,它将使用邮件中包含的测试邮件程序:
有关检查测试消息的示例,请参见上的“使用带
有时在测试中,我会比较两个用户对象:
transaction.sender.should == user1
Rspec给了我一些输出,显示对象具有相同的id(和其他参数),但具有不同的对象id:
Failure/Error: tx.sender.reload.should == @u1.reload
expected: #<User _id: 5030afb4f8182bb3a9000005, ...>
got: #<User _id: 5030afb
我正在使用以下rspec设置代码:
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, :js => true) do
Da
我有一个问题,Rspec加载路由两次,并因此抛出一个错误。
这几天我一直在想办法,但运气不好。搜索互联网不会带来太多的好处。当我运行rspec时,它会给出以下错误:
/home/user/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.1/lib/action_dispatch/routing/route_set.rb:434:in `add_route': Invalid route name, already in use: 'root' (Ar
标签: Rspec
sinatracapybararackguard
使用guard rack重新加载应用程序。它可以正确地重新加载应用程序,但是在重新加载后如何运行规范
guard :rack do
watch('Gemfile.lock')
watch(%r{^app/(.+)\.rb$})
callback(:reload) { `rspec spec` }
end
回调应该在应用程序更新后运行规范,但似乎什么也没发生
配置:
Capybara.configure do |config|
config.run_server = false
使用水豚/Rspec是否可以实现这一点
现在,在我的测试中,我特别为日历选择器字段设置了一个日期,例如“2016-11-30”,但这并不准确,不断更新“当前年份”或任何内容的测试也没有意义
我现在能用点时间吗
比如说
page.fill_in'Date\u Chooser':with=>Time.now.strftime(“%y-%m-%d”)我想出来了,结果是Date.today.strftime(“%y-%m-%d”)
标签: Rspec
ruby-on-rails-5ruby-2.4ruby-upgrade
我已经将我的应用程序从Ruby 2.2.3升级到Ruby 2.4.2,Rails版本是5.1.4。我可以升级应用程序,但当我运行“bundle exec rspec”时,会出现太多类似的行
..... "ruby-2.4.2/lib/ruby/2.4.0/forwardable.rb:157 forwarding to private method" ...
我遇到了一个链接,它解释了产生这些行的原因:
但我没有找到任何办法来移除它们
有人能告诉我怎么才能去掉这些线吗
标签: Rspec
rspec-railscircleciruby-on-rails-5.1rspec3
我正在一个应用程序上工作,当我在本地机器上运行这些规格时,它成功通过了500多个规格。但是,当这些规范在CircleCI上运行时,进程将被终止。
我试图通过跟踪本地机器上的内存来调查这个问题。当我看到ruby进程占用4gb的内存时,我很惊讶,这就是触发CircleCI终止进程的原因
我不确定我的规格占用所有这些内存的原因
我已经搜索了一个配置,在每个规范之后清理内存,但没有结果
这是我的rails\u helper.rb
require "mongoid-rspec"
require "spe
标签: Rspec
requestbdddatabase-cleaner
我有要求规格:
describe "Matches" do
describe "GET /matches" do
it "works! (now write some real specs)" do
# Run the generator again with the --webrat flag if you want to use webrat methods/matchers
get matches_path
response.status.s
有没有类似于have_selector的find的缩写
例如,我可以写:
it { should have_selector('h1', text: 'Welcome') }
下面有类似的速记吗
it "should have blank customer input" do
find_field('CustomerName').value.should be_blank
end
我认为没有速记,因为速记员是RSpec匹配者
您不能使用have_field执行此操作,因为它不支持属性
我正在尝试测试与rspec的一些关联。
这是我的测试:
(一)
(二)
这是apply\u startup方法的定义:
def apply_startup
startup = Startup.find_by_id params[:startup][:id]
@incubator.pending_startups << startup if startup
redirect_to incubator_path(@incubator)
end
def应用_启动
startu
我有一个Rspec配置,我只想应用于请求规范。到目前为止,我拥有的最佳解决方案是使用标签:
# in spec_helper.rb
config.before(:each, request: true) do
# special settings
end
及
这取决于我记得总是用request:true标记这些规格是否有方法根据测试所在的文件夹配置测试?
(我使用的是Rspec 2.14)Rspec rails根据其位置设置每个规范的:类型(必须是已知类型之一-您不能只是虚构。列表为)
R
Minitest已验证
RSpec是否有类似的方式要求断言?您可以为此配置RSpec,请查看以下内容:
及
基本上,您需要在hook之后设置,并检查元数据是否存在预期运行:
(url下降时代码的副本)
这是我的看法:
RSpec.configure do|config|
config.include(Module.new do
属性写入器:期望集计数
def期望值设置计数
@期望值集计数=0
终止
def expect(*)
自我期望集计数+=1
超级的
终止
(完)
config.after
Rspec版本-3.8
测试类型-请求规范
如何在所有请求规范上全局设置https协议?看起来您可能正在使用Rails,在这种情况下,您可以执行以下操作之一:
要为所有Rspec示例设置“https”,请创建一个文件,如spec/support/url_options.rb,其中包含以下内容:
要仅针对请求规范,可以使用钩子,例如:
对于站点范围的配置,您可以将以下内容添加到config/environments/test.rb中:
这对于请求规范应该可以很好地工作,但是特性规范可能会有额外的复
标签: Rspec
performance-testingrspec-railslet
我发现在代码中设置变量比使用let容易得多let很挑剔,总是告诉我错误使用它的方式
当我在我的规范中使用一个简单的变量声明时,比如
tx\u good=makeTransaction1(),一切正常
但是当我使用时,就让像这样
让(:tx_good){makeTransaction1()}我总是会遇到这样的错误,告诉我它不能在这里或那里运行
`let` and `subject` declarations are not intended to be called
in a `befo
输出
- {
"name" => "pratam",
"wisher" => "max mc"
}
+ {
"wisher" => "max mc",
"name" => "pratam"
}
但是上面的代码似乎不起作用。在散列中,与键顺序无关的匹配方法是什么?匹配器应该与键顺序无关:
在你的(干净的)irb里试试这个
哈希没有“专用”匹配器,因为这就是eq的工作原理
也许你有一些“奇怪”的宝石,可以做出
我正在开发一个rails应用程序来自学BDD和测试。使用cucumber+webrat+rspec,在Railcast视频tuts之后。
在这个应用程序中,测验有很多问题。我正在测试的视图应该两次不连续地呈现问题。(此处不测试连续性)
我有一个黄瓜场景,旨在检查这一点
Given quiz titled "Pearl Jam" has questions named "Corduroy, Dissident"
When I go to the experiment page for quiz t
如何测试当访问控制器中的某个操作时,该控制器的before_过滤器将被执行
before_筛选器在单独的示例组中进行测试,因此无需对依赖before_筛选器的所有操作重复测试
如果我有
controller.should_receive(:my_before_filter)
在我的例子中,它工作得很好。但是,具有上述期望似乎会导致未执行my_before_filter中的逻辑(它应该分配一个实例变量)
如何克服此限制或在过滤器之前模拟my_的行为(它在控制器上设置实例变量)?还是有更好的方法
我有一段代码要测试:
class User < ActiveRecord::Base
has_many :servers, :dependent=> :destroy
end
class用户:销毁
结束
请给出测试关联代码的RSpec代码示例。在RSpec中测试关联的一种方法是使用。Shoulda是一个助手的集合,可以让常见的重复测试快速编写,同时又易于理解。要测试您的模型,请确保已安装并需要shoulda gem。然后,您可以测试与以下内容的关联:
describe Us
我已经设置了carrierwave,它可以很好地处理我的图像。我在一个子文件夹中很好地调整了thumb版本的大小。从我的前端(HTML)和我的rails控制台。我使用MiniMagic
但在我的rspec中,拇指测试总是失败
describe 'processed images' do
before(:each) do
AttachmentUploader.enable_processing = true
AttachmentUploader.enable_processin
我的测试失败了,测试报告上写着
失败/错误:分配(:项)。应为eq(项):[#项id:
756,产品名称:“第1项”,产品价格:310.25,产品余额:
3,活动:1,创建于:“2012-10-11 20:10:23”,更新于:
"2012-10-11 20:10:23"]
得到:[]
你能告诉我为什么考试不及格吗
cart_controller.rb文件
class CartController < ApplicationController
def index
@cart
我一直在努力让我的要求生效。我已经尝试了许多不同的方法,我通过谷歌找到了这些方法。以下是我在请求规范中分别尝试的以下帮助程序:
#spec/support/devise_request_spec_support.rb
module DeviseRequestSpecSupport
def login(user)
post user_session_path, login: user.email, password: 'foobar'
end
end
#spec/support
运行依赖于另一个场景的场景的最佳方式是什么
scenario 'create a new category' do
index_page.open
index_page.click_new_category
modify_page.fill_form_with(category_params)
modify_page.submit
expect(index_page.flash).to have_css('.alert-success')
ex
标签: Rspec
tddcapybaracapybara-webkitspecifications
我想找到表单中的第一个空字段
find(“输入[name='somename']”,文本:“”)。首先
出错
Capybara::模棱两可:
不明确匹配,找到5个元素与css“input[name='somename']”和文本匹配
从Capybara 2.0开始,find要求只有一个元素与规范匹配。根据,您可以首先使用具有相同规格的,如中所示:
first("input[name='somename']", text: '')
虽然这显然效率较低,但您也可以使用:
all("input[na
我进行了以下RSpec测试:
describe "#users_with_unspent_rewards" do
subject(:sponsor) { double(:sponsor) }
let!(:reward) { double(sponsor: sponsor, cost: 300) }
let!(:user) { double }
before do
allow(subject).to receive(:rewards).and_retu
在RSpec中,我可以使用
click_link "change your password"
RSpec随后将找到相应的链接并遵循相关的HREF
你如何在电子邮件中做到这一点?
我试图在电子邮件中使用email\u spec执行相同的行为。但是,我似乎找不到一个等价的助手,它可以单击与中特定链接文本对应的链接
这似乎是一个非常明显的用例,所以在我写一些东西来为我做之前,我想检查一个是否已经存在
这种情况下,我想查看电子邮件中与“更改我的密码”相对应的任何链接。我希望您已正
我正在尝试使用chefspec运行单元测试。我在食谱中添加了数据包。没有数据包,chefspec测试运行良好。添加数据包后,chefspec显示以下错误:
1) database::prerequisites installs a package
Failure/Error: let(:chef_run) { ChefSpec::ServerRunner.new(platform: 'oracle', version: '7.2').converge(described_recipe
上一页 1 2 ...
5 6 7 8 9 10 11 ...
下一页 最后一页 共 27 页