我已经成功地将have_选择器与RSpec(版本2.0.1)一起使用。我最近在have_tag上找到了文档。。。带着标签。。。与RSpec 1.3.2关联并希望使用它,但RSpec给出了错误:
undefined method `has_tag?' for #<ActionController::TestResponse:0x105584e80>
我尝试了相同的语法,将“have_selector”和“with_selector”替换为“have_tag”和“with_tag”,在
在执行click_按钮后的某个时刻,我正在检索无法转储的singleton错误。rspec的所有输出告诉我:
1) home not logged in sign in should contain content with 'Add new charity
Failure/Error: click_button "Install"
TypeError:
singleton can't be dumped
# (eval):2:in `click_button'
# ./spec/
关于如何在线执行此操作的信息不多,但在我的Guardfile中,我正在为我希望Guard监视的各种目录/文件设置监视。如何为已更新的已更改的spec/test文件指定监视,并仅在发生这种情况时运行该特定文件?谢谢
guard 'rspec' do
watch(%r|^spec/.+_spec\.rb$|) { "spec" }
end
当前,当spec目录下的文件发生更改时,上述程序将运行所有spec/测试。但我只想运行更改后的测试文件的测试
当前spec目录树
更改有效的测试,例如:
describe "a" do
it "does part A" do
it "does not wait if not run in parallel" do
ParallelTests.should_not_receive(:sleep)
ParallelTests.wait_for_other_processes_to_finish
end
end
end
到
给予
失败/错误:预期(并行测试)。不接收(:睡眠)
命
我搞不懂这种奇怪的行为。
这会过去的
expect(html\u字符串)。包括重置url
这些将失败
expect(html\u字符串)。重置文本\u url
expect(html\u字符串)。重置链接\u url
错误消息是预期会找到文本,但没有匹配项。所以这并不是一个忘记包含spec_helper的错误
我已经仔细检查了html\u字符串是否包含整个重置url。它们不是不可见的内容
另外,我还有其他规范(在同一规范文件中)使用have_text和have_link传递。
编辑:不知道为什么
标签: Rspec
capybara-webkitvuetify.js
我有这个规格:
checklist_item_element.fill_in 'description', with: 'Changed description'
page.find('body').click # to blur the input field
checklist_item.reload
expect(checklist_item.description).to eq('Changed description')
我有这个模板:
v-text-field.habit-card
我正在使用rspec3
在(:suite)之前的块中,我想获得将在当前规范运行中运行的所有示例的(嵌套的?)列表(即,当给定路径时),以便扫描它们的所有metatdata
背景:我希望能够扣除是否存在水豚规范,并在这种情况下启动前端服务器。您不必预先执行,将运行指定的代码
RSpec.configure do|config|
配置。当\u第一次\u匹配\u示例\u定义(:capybara)时
启动服务器
结束
结束
RSpec.description do
描述“非水豚”是什么
#仅运行此示例
我无法访问对象的私有属性/变量以在rspec中进行测试
我了解到,您可以访问这样的私有方法:
expect(CLASS.send(METHOD_AS_SIMBOL,PARAM1,PARAM2…)).to eq(EXPECTED_RESULT)
但我不能让它为属性工作
编辑:
我对不测试私有方法和属性的想法感到不舒服。我读过关于不测试私有代码是有益的,因为它迫使程序员简化类并遵循单一责任原则
但不知怎的,我觉得有必要这么做。这让我觉得,如果我100%地测试代码,我的代码将更加可靠。而且,我不喜
我的配方中有一个代码::File.stat('/path/to/File').uid>=0,我想在chefspec中存根它
这就是我正在尝试的:
允许(文件).接收(:stat).并调用原始文件
allow(File.stat).to接收(:uid).with('/path/to/File')。并返回(0)
这给了我参数错误:参数数量错误(给定0,预期为1)
是否有办法存根File.stat,以便测试与uid的比较
我正在为视图编写规范,它在布局中呈现了一个菜单(部分菜单)。我想为所选菜单编写规格。这是密码
it "should have User Administration link" do
template.stub!(:render).and_return(:partial => "layouts/admin/menu")
do_render
#render :partial => "layouts/admin/menu" #do
response.sho
我希望这个简单的问题有一些聪明的答案
我使用Spork运行我的规格和功能。效果很好。但是,如果使用迁移更新数据库,则在不停止两台spork服务器的情况下无法更新测试数据库。我是否可以让spork在不关闭数据库的情况下删除并重新创建数据库
我之所以问这个问题,是因为我可以在我的开发服务器运行时运行迁移,在我看来,我正在做完全相同的事情。也有同样的问题,并发现了以下问题:
根据那里的建议,我补充说:
ActiveRecord::Base.remove_connection
到spec_helper
例如,我想在irb中说b=double(“book”),然后处理结果
如果我说
require 'rspec'
b = double("book")
我犯了一个错误。想法?您可以通过以下方式在irb中玩RSpec测试双打:
$irb
>需要“rspec/mocks/standalone”
>b=双(“书本”)
=> #
很棒的提示!还有哪些其他…/独立选项?有吗?据我所知,这只是mock,但是您可以在您的mock对象上存根方法和设置消息期望,这非常方便。如果您发现任何有趣的内容,请更新此线程
今天运行我的rspec测试时,每当测试中有“page.execute\u script”调用时,我就会出现以下错误
Selenium::WebDriver::Error::JavascriptError:
waiting for evaluate.js load failed
# [remote server] file:///tmp/webdriver-profile20130807-3105-fpynb7/extensions/fxdriver@googlecode.com/com
在使用Ruby 2的Rails 3.2.14应用程序中,使用rspec Rails 2.14.0和capybara 2.1.0,以下功能规范导致故障:
require 'spec_helper'
feature 'View the homepage' do
scenario 'user sees relevant page title' do
visit root_path
expect(page).to have_css('title', text: "Todo")
是的,冒着风险让整个Rails社区超过我
。。。为什么RSpec在windows上速度如此之慢?我说的慢是指慢。47分钟内完成710个示例。分钟
与同一台电脑上的cucumber相比,183个场景和1280个步骤只需1.26分钟
RSpec-模型和控制器
Cucumber-所有可能的用户交互
我知道RSpec的速度很慢,但我肯定想知道为什么每个示例平均花费4秒。我已经运行RSpec向我展示了最慢的前10名,但它似乎是一个“一般”的慢度,而不是任何特别的慢度
我是一个“快乐的windows用户”(
我最近将我的测试从Cucumber/Capybara转换为Rspec/Capybara。我正在使用ActiveAdmin。当我用Cucumber对ActiveAdmin运行测试时,测试运行,一切都通过了。当我使用Rspec运行测试时,我收到:
Rendered /home/vagrant/.rvm/gems/ruby-2.0.0-p451/bundler/gems/active_admin-d11c0a56504a/app/views/active_admin/resource/index.ht
我查阅了Github文档,通过谷歌搜索找到了答案,但没有找到为什么水豚截图没有保存任何失败截图的答案
这是我目前为我的应用程序所做的设置
Gemfile
group :development, :test do
gem 'meta_request'
gem 'factory_girl_rails'
gem 'faker'
gem 'rspec-rails', '~> 2.14.1'
gem 'capybara'
gem 'capybara-webkit'
gem
标签: Rspec
capybaracapybara-webkit
该问题基本上在主题中描述。我真的不知道这个问题是RSpec问题还是水豚问题。我还没有在网上找到任何关于这个问题的信息,潜入水豚的代码也帮不了我。
我正在使用capybara webkit驱动程序。它真的只是没有启动服务器,还是在运行0个示例时正确结束?所有示例都失败,因为服务器没有启动。
标签: Rspec
mockingruby-on-rails-5
我想测试一个新对象的initialize,在这个initialize中调用了一个我需要模拟的方法(这个方法要求用户输入一个名称…典型情况)
这是可行的,但是使用allow\u任何\u实例
如果没有允许的任何实例,我如何测试它?,因为我已经读到它不应该被使用
非常感谢如果您想在initialize函数中使用call私有方法,我怀疑除了允许的任何实例之外,没有其他方法。在方法定义中使用字符串literal名称,是错误的语法
但是,您可以重构代码,使用TestDouble来更轻松地进行测试
下面的代码
从spec文件内部,我如何检测该文件是作为测试套件的一部分运行还是单独运行。如果它是自己运行的,我想要详细的输出,但是如果它是多个文件中的一个,那么我想要抑制输出
例如,如果文件是'spec/models/my_model_spec.rb',我想区分
rspec spec
及
我在我的spec\u helper.rb文件中发现了这个注释:
# Many RSpec users commonly either run the entire suite or an individual
# fil
我正在使用RSPEC2.0。我不明白这里的范围是如何工作的。。。不知何故,您可以读取任何块中的变量,但我无法更新它?为什么呢
describe 'Test App' do
before(:all) do
@test= :blah
end
it 'test' do
@test=:bye
p @test # => prints bye
end
it 'test' do
p @test # => prints blah
我在几个项目中有一个功能启用机制(一个使用RSpec1和Rails2,另一个使用RSpec2/Rails3),我正在寻找一种更好的方法来覆盖一个功能,而不必对其他功能做任何事情。最后,我正在寻找一种方法,在使用特定参数调用方法时,将其存根,并在其他情况下正常运行
关闭:
Project::Config.should_receive(:feature_enabled?).with('new_feature').any_number_of_times.and_return(true)
get :in
我正在使用rspec2.4.0和cucumber0.6.4。我正在运行一个简单的场景(为了这个问题):
使用步骤定义:
require 'rspec'
require 'rspec/expectations'
When /^I test something$/ do
result = (1==1)
result.should be_true
end
当我运行此场景时,会遇到以下问题:
undefined local variable or method `be_true' for
我正在尝试在方法中存根方法的行为:
class A
def method_one(an_argument)
begin
external_obj = ExternalThing.new
result = external_obj.ext_method(an_argument)
rescue Exception => e
logger.info(e.message)
end
end
end
规格:
但是,永远不会引发异常
我也试过:
it "sh
我有一个具有此验证的用户模型
validates :name, :lastname, :format => {:with => /^[a-zA-Z]+$/, :message => 'Only letters and spaces allowed.'}
我不知道如何正确地测试它
我已经完成了一个函数,它返回一个由a-zA-z字符数组中的10个字符组成的随机字符串
def get_random_name
"abcdefghijklmnopqrstuvwxyzABCDEFGH
我们正从水豚网络套件迁移到恶灵。之前,我们确实使用了水豚webkit,您可以在这里看到:
def use_proxy_with_vcr cassettes_name = nil, cassettes_options = {}
page.driver.browser.set_proxy(:host => Billy.proxy.host, :port => Billy.proxy.port)
page.driver.browser.ignore_ssl_errors
Bil
正在使用的版本:
轨道-3.2.13
Ruby-Ruby 1.9.3p429(2013-05-15修订版40747)[x86_64-darwin11.4.2]
我跑
$rails生成集成\u测试静态\u页面
得到
invoke rspec
create spec/requests/static_pages_spec.rb
遵循Rails Hartl教程第3.2.1节。
运行时出现以下错误:
$bundle exec rspec spec/requests/static\u pages\
我刚刚将我的水豚宝石从版本1升级到2.1.0(最新版本)。基于Capybara自述,我在Spork.prefork块内的spec_helper.rb中添加了以下几行
require 'capybara/rspec'
require 'capybara/rails'
但是,我犯了一个错误
/home/user_1/.rvm/gems/ruby-1.9.3-p392/gems/capybara-2.1.0/lib/capybara/rails.rb:6:in `block (2 levels) i
我遇到以下错误
And I am exists as a parent # features/step_definitions/kid_steps.rb:106
undefined local variable or method `role' for #<Cucumber::Rails::World:0xc4722f8> (NameError)
./features/step_definitions/event_steps.rb:10:in `create
这将返回:
#excerpt
subject { response }
its(:response_code){ should eq 401 }
it { should redirect_to '/sign_in' }
我以为401是一个重定向?或者rspec的redirect_to方法是否专门查找302?响应代码是否表示未经授权?那么,如果有人想访问受限区域,并因为未经授权而被重定向到其他地方,会发生什么情况?尽管他们因为未经授权而被重定向,但重定向应该是正常的302吗?我什么时候给他们40
标签: Rspec
capybarabitnami
在使用Capybara运行Rspec时,我不断遇到以下错误:
Dyld Error Message:
Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /Applications/rubystack-2.0.0-12/*/libJPEG.dylib
in
我正在测试导入的对象,如下所示:
%w(fields to test).each do |field|
its(field) { is_expected.to eq original.send(field) }
end
如何在此设置中添加错误表以便知道哪个字段失败?尝试将第二个参数添加到eq,但它预期会失败
它是这样做的,但不雅观:
specify do
expect(
subject.send(field) == original.send(field)
).to be_
我想将我的ChefSpecs与Jenkins集成在一起,这样一个Jenkins作业可以运行所有烹饪书的所有规格,并打印一个摘要。不幸的是,这似乎不像我想象的那么容易。编写一个简单的Rakefile来创建一个rspec-rake任务(比如在测试标准Ruby规范时)不会有帮助,因为rspec希望在调用它的目录中有一个Berksfile
所以,似乎只有两种方法可以测试烹饪书的规格
为每一本烹饪书创造一份詹金斯工作
手动迭代Jenkins中的食谱,并在我找到的每本食谱中调用rspec。它不会打印所有测
在我的一次测试中,我注意到我的回答检查有一个输入错误,expect(response)。to_success而不是expect(response)。to_success。考试通过了。为什么考试还是通过了
响应。成功?返回:
Failure/Error: response.succes?
NoMethodError:
undefined method `succes?' for #<ActionController::TestResponse:0x007fe6e22a
我有一个代码块,它在调用优惠券的方法之前锁定优惠券的数据库表
coupon.with_lock do
apply_user_coupon!(coupon)
end
我如何测试这个?我根本不在乎锁。。。我只想让测试继续进行应用用户优惠券方法,但我不知道如何绕过测试的锁定部分。我该怎么做
请注意,块不带参数。在it或before块中,您可以删除功能并让块实际运行
在it或before块中,您可以删除该功能并让该块实际运行
产出什么?有些区块不在乎产出什么。这是完美的为那些和产量什么?有一些
使用Rspec,我可以模拟Dir.glob(“/my/Dir/*.tmp”)这样做:
expect(Dir).to receive(:glob).with("/my/dir/*.tmp")
如何模拟Dir[“/my/Dir/*.tmp”]
expect(Dir).to receive(:"[]").with("/my/dir/*.tmp")
标签: Rspec
rspec-railsrspec3
如何仅在设置标志时运行rspec测试
我使用的是Stripe Ruby Mock,他们使用live标志。但是,我不希望在未设置-t live时运行测试
bundle exec rspec-t live spec
it "should run rspec test, only when live is true", live: true do
expect('value').to eq('value')
end
目前,我的测试在设置了-t live和未设置时运行 您可以设置环境变量:
LIV
是否有方法访问或统计在特定点发生的故障数?例如,在我的第一个描述块的末尾,我想看看发生了多少次故障。我知道最后会打印出来,但我现在就要:)这个问题是重复的。请看下面的答案:
我在Michael Hartl的Rails教程的第7.2.2节(第7章)中,当我在app/controllers/users\u controller.rb中添加@user变量时,事情变得很奇怪。现在应该通过的测试没有通过,而是因为不同的原因失败了:
$ rspec spec/requests/user_pages_spec.rb -e "signup page"
Failures:
1) User pages signup page
Failure/Error: before { vi
嗨,智者社区!
在使用远程Webdriver进行测试时,有没有处理Selenium 2(rpec和capybara)的基本身份验证的想法?喜欢Internet Explorer 9吗
我所尝试的:
我没有使用RackTest。我确实使用了Selenium网格和远程Webdriver。
我不想使用“访问”http://user:password@com/“因为这对IE9不起作用(并且Reg密钥更改为允许它对Win7/IE9不起作用)
我读过。有很多具体的想法,但我看不到支持远程Webdriver和
标签: Rspec
associationsfactory-bothas-manytraits
我想干掉我的测试套件。试图创造一种特性来代表一个产品的特定价值在父工厂中有很多关系。理想情况下,这些值将由单独的工厂创建
我想这样做:
factory :room do
trait :bathroom do
type :bathroom
end
end
factory :house do
trait :one_bathroom do
association, :rooms, factory: [:room, :bathroom]
end
end
如果房屋
标签: Rspec
capybarapoltergeistclipboard.js
我使用javascript库clipboardjs将输入字段值复制到系统剪贴板
在my application.js中:
function addressClipboard() {
new Clipboard('.address-copy', {
text: function(trigger) {
var addressString = "";
addressString += $('#addresses_attributes_0_stre
标签: Rspec
watirwatir-webdriverclass-names
这和我以前问的这个问题是一样的-。我能够基于使用类名资产卡可选项添加特定数量的元素
目前,我希望单击更多元素,将它们添加到现有集合中。我的困境是:
未单击元素时,类名为:图像卡资产卡可选
单击某个元素时,selected将附加到类名:image-card-asset-card-selected-selected
在我的例子中,我试图寻找只显示图像卡资产卡可选且不包括选定的其他元素。我不知道如何明确定位它们
有没有一个正则表达式解决方案或其他方法来解决这个问题?找到没有特定类的元素的最简单方法
我在cucumber框架中使用rspec期望值,在步骤定义级别使用时,它们看起来很好
我已将env.rb文件配置为:
require 'rspec/expectations'
World(RSpec::Matchers)
我现在注意到的问题是,如果我试图在某个步骤中使用的对象的方法中使用rspec,那么我就失败了
E.g.
Steps_definition.rb
service.use_rspec
class Service
def use_rspec
header
我用的是水豚和幻影。
似乎有了这个驱动程序,capybara并不总是等到ajax处理完成,所以我随机获取红色规范。
有没有办法在rspec中测试datatable是否已完成记录加载?从上一个类似的问题中,您可以将您的ajax选项还原为旧的fnServerData,您的规范应该可以再次运行。但不确定为什么使用ajax不起作用
我的应用程序中有一些复杂的、长期运行的延迟作业流程。我使用Rspec来测试流程中使用的各个方法和类,但我也希望使用不同的测试数据执行许多端到端的后台工作
我在延迟工作维基上找不到关于这个的任何东西,所以这个问题看起来很有趣,但我真的不明白这里发生了什么。
我可以使用工厂轻松设置测试数据,然后调用启动后台处理的类。我预计测试需要很长时间才能完成
编辑的背景代码
class Singleplex
def perform(batch_id,user)
batch = sta
使用rspec3.3,我希望有一个匹配器,它根据示例的元数据具有不同的实现(事实上,它是根据rspecrails的示例的:type)
但是,我看不到任何一种方法:
为不同的元数据定义不同的自定义匹配器(使用相同的名称)(就像包含帮助器方法模块一样)
从matcher访问运行示例的元数据(就像访问运行示例的方法一样)
例如,我可以:
RSpec::Matchers.define :some_matcher, type: :request do |expected|
#implementat
由于测试顺序的原因,我有一些测试在RSpec中间歇性失败(如果我使用RSpec--seed 1234 spec重新运行套件,我每次都可以重现失败)。在调试和修复此问题时,我希望将为更快的反馈循环而运行的测试仅限于导致失败的测试
例如,如果我运行完整套件(rspec--seed 1234 spec),则在spec/models下有一些测试失败,但如果我运行rspec--seed 1234 spec/models,则测试通过
我试图弄清楚这是否是因为导致初始故障的是spec/models之外的测试,
假设我创建了一个带有一个参数的Rspec共享示例组(测试的业务目的无关,它是我当前代码库的一个过于简化的版本):
shared_examples“some example group”do|参数|
它“做某事”做什么
放置“参数=#{parameter}”
打印\u参数
结束
def print__参数
放置“参数=#{parameter}”
结束
结束
我可以将参数作为变量访问,只要使用它测试块即可。然而,当我试图从一个方法访问参数时,我遇到了一个“未定义的局部变量或方法”。为什么呢?我已经
在Rspec(3.9版)中测试自定义类时出现一些奇怪的行为
代码
class AlertMaster
def initialize(params = {})
...
end
def send_alert
1.upto(2) do |attempt|
begin
self.alert_me
break
rescue => e
1 2 3 4 5 6 ...
下一页 最后一页 共 20 页