我正在尝试决定是使用Cuke4Nuke还是SpecFlow。
每种方法的优点/缺点是什么?关于哪个更好以及为什么更好的意见
谢谢 (我可能有偏见,因为我参与了SpecFlow,但这里是我的想法…)
Cuke4Nuke与Cucumber非常接近。
这将带来很多好处:
相容性
当Cucumber进化时,从Cucumber获得新特性(至少在理论上,但语言支持就是一个例子)
作为黄瓜群落和黄瓜生态系统的真正一部分
然而,这也有一些潜在的缺点:
红宝石是必需品
由于涉及到更多的基础设施(Ruby、W
FactoryGirl是否可以定义一个随机数,比如0-10
factory :rating do
ranking 1 #random number?
recipe
end
我真的希望生成的排名数字是0-10之间的随机值
我想用不同的数字生成评级,但不想在rspec中明确定义它们。这将用于显示评级数字的平均值和其他统计数据。例:有多少个10,多少个0,平均值等等。可能是这样的吗
FactoryGirl.define do
sequence(:ran
标签: Rspec
rspec2rspec-rails
我想在每个控制器操作中测试用户是否登录
最好的做法是将其晾干,以便我可以在所有的get操作中重复它,即get、show、new、edit
它需要传入get:index、get:new等,并传入用于显示和编辑的参数
以下是非干式版本,只需一个操作:
RSpec.shared_context 'when user is not logged in' do
before do
sign_out :user
end
it 'GET#index redirects to sign
我是测试新手,所以请容忍我:)
我想测试页面上的随机内容。例如,让我们测试页面是否显示“foo”或“bar”内容
下面是我想要达到的目标
page.should (have_content('foo') || have_content('bar'))
有什么好主意吗?我不知道有什么好用的。但是你可以自己烤
使用:
page.should满足{page | page.has_content?('foo')或page.has_content?('bar')}
或
编辑:有内容接受正则表达式,因此您
标签: Rspec
rspec2rspec-rails
我在谷歌上搜索了这个错误,但没有找到可以修复的。
请帮帮我。谢谢:)确保在spec/spec\u helper.rb中包含AssertDifference:
context 'with event_type is available create event' do
let(:event_type) { EventType.where( name: 'visit_site').first }
assert_difference 'Event.count' do
Event.fir
标签: Rspec
sinatrarspec-rails
我目前正在构建一个Sinatra应用程序,它将作为API的一部分输出JSON模板。使用rails和rspec rails gem进行测试时,我能够调用:
response.should render_template('template-name')
然而,由于我没有使用Rails,我假设这不会起作用。Sinatra测试json输出的替代方案是什么?谢谢 有一些,但我就是这样安排的。通过将应用程序包装在模块的类方法中,可以更容易地在规范中运行,然后只需通过last\u response.bod
标签: Rspec
ruby-on-rails-2
我正在升级一个旧的rails2.3应用程序,发现大多数规范都失败了。
我正在努力让他们通过
到目前为止,大多数规范文件还没有包含require“spec\u helper”,但需要添加它。
(不知道为什么它以前不在那里)
当我将spec\u helper添加到一些控制器时,我得到的错误堆栈级别太深(SystemStackError)。
我目前运行的程序如下,但我相信这可能是Rails 2.1的应用程序
轨道2.3.17
Rspec轨道1.3.2
Ruby 1.9.3
文件的顶部看起来像这样。
标签: Rspec
rspec2rspec-rails
以下代码按预期工作:
Object.any_instance.should_receive(:subscribe)
但当使用新的rspec预期时,它不起作用:
expect(Object.any_instance).to receive(:subscribe)
错误是:
expected: 1 time with any arguments
received: 0 times with any arguments
如何使expect()接收工作正常?现在有一个没有很好文档记录的方法,名为e
我收到错误消息:
'cannot load such file -- spec_helper'
将rspec gem从2.13更新到2.14.1之后
下面是我的宝石清单。RSpec2.14.1是否有一些依赖项、gems需要更新
*** LOCAL GEMS ***
active_support (3.0.0)
activesupport (4.0.0)
addressable (2.3.4)
atomic (1.1.13)
bigdecimal (1.1.0)
builder (3.2.
标签: Rspec
capybarapoltergeistzeus
运行zeus rspec spec/后,如果有使用js:true的示例,则该命令不会将控制权返回bash shell。它运行测试并报告结果,但不退出。但是,如果我只运行rspec而不运行zeus
我可以用这个微不足道的规范重现问题:
require 'spec_helper'
describe "users index" do
before { visit root_path }
it "should not hang", js: true do
expect(page).t
我有一个名为“参数”的资源,它嵌套在API中的“测试”下。其关系如下:“一个测试有许多参数”。我的路线安排如下
测试/:测试id/参数/:参数id
我的rake路由给出:
test_参数GET/tests/:test_id/参数(:format)参数#索引{:format=>:json}
POST/tests/:test_id/参数(:format)参数#创建{:format=>:json}
new_test_参数GET/tests/:test_id/parameters/new(:format
标签: Rspec
ruby-on-rails-5
我正在测试新的Rails版本5.0.0.alpha和RSpec3.1.7,但是我收到了错误:
undefined method `use_transactional_tests=' for #<RSpec::Core::Configuration:0x007fccf515e338> (NoMethodError)
但我收到了这样的警告:
DEPRECATION WARNING: use_transactional_fixtures= is deprecated and will b
刚开始与RSpec和Factory Girl一起学习测试,并且遇到了这个测试
describe "#show" do
it "render the show template" do
get :show, id: FactoryGirl.create(:opinion)
expect(response).to render_template :show
end
end
要呈现show页面,我知道它需要ID。
标签: Rspec
rails-activerecordrspec-railsruby-on-rails-5
我还没有找到测试ApplicationRecord方法的好方法
假设我有一个名为one的简单方法:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
def one
1
end
end
不出所料,NotImplementedError:ApplicationRecord是一个抽象类,无法实例化。
所以我尝试了匿名课堂建议:
这将随着TypeError而消失:没有将nil隐式
当我分别运行这些rspec文件时,它们都通过了,当我一起运行时,它们失败了
似乎当我运行@application\u presenter=descripted\u class.new(TestClass.new,view\u context)时,它使用了ActAsAttribute\u spec.rb中的TestClass
这似乎是一个范围问题。我认为RSpec.descripe是有名称空间的。处理这一冲突的最佳方式是什么?我可以更改TestClass的名称,但我更喜欢一种更好的方法,即确保我的
标签: Rspec
mongoidintegration-testingpadrino
有没有什么好方法可以用rspec测试Padrino中的控制器和子应用程序模型?我是一个新手,正在尝试Padrino和Mongoid ORM。有人能给我提供Padrino中显示子应用程序和主应用程序RSpec示例的链接吗。您可以切换@APP
@app=Admin.tap{}
或
@app=YourApp.tap{}你能举个简单的例子,说明我如何使用app()吗?
标签: Rspec
ruby-on-rails-2rspec1
我有一个旧的rails应用程序,在Rails2.3中,我想升级到Rails3。然而,在我这样做之前,我想添加一些rspec测试。由于它是Rails2.3,我相信我必须使用RSpec1.3,这就是我遇到麻烦的地方
我有一个简单的控制器:
class MySimpleController < ApplicationController
def index
...
end
end
我得到了错误
ActionController::RoutingError in 'MyS
标签: Rspec
helperrails-routingspork
我有一个rspec规范:
require "spec_helper"
describe ApplicationHelper do
describe "#link_to_cart" do
it 'should be a link to the cart' do
helper.link_to_cart.should match /.*href="\/cart".*/
end
end
end
以及ApplicationHelper:
module Applica
试图通过迈克尔·哈特尔的教程;在这里遇到问题
我刚刚创建了应用程序
下面是我运行“bundle exec rspec spec/requests/static_pages_spec.rb”时看到的内容
Corey-M-Kimball:sample_app coreymkimball$ bundle exec rspec spec/requests/static_pages_spec.rb
/Users/coreymkimball/.rvm/gems/ruby-2.0.0-p247@railstu
使用和RSpec的新语法的正确格式是什么?当然可以使用shoulda matchers和新的expect语法,如下所示:
it 'should validate presence of :email' do
expect(subject).to validate_presence_of :email
end
或者更简洁但可读性较差:
it { expect(subject).to validate_presence_of :email }
即使在config.syntax==:expec
我正在用公共汽车。我正在尝试测试服务是否正在运行到我的kitchen实例中
这是我的服务器规格测试
描述“myapp::redis”应该做什么
描述服务('redis6379')的用途
它{应该启用}
它{应该在运行}
结束
结束
但是当我运行命令kitchen verify时,它就是结果
myapp::redis
服务“redis6379”
应该启用
应正在运行(失败-1)
它测试告诉我redis服务已启用,但未运行
这里发生了什么
如何使用serverspec服务资源解决此问题?这可能是
我试图为产品模型执行租户强制执行。但在更新请求规范中,它显示以下错误:
预期响应的状态代码为:不可处理的_实体(422),但其状态代码为:禁止(403)
class ProductsController:controller do
以前{
控制器\u存根\u令牌\u身份验证
}
let(:valid_session){{}
let(:上下文){
OpenStruct.new(
租户id:SecureRandom.uuid
)
}
以前{
允许(控制器)。接收(:当前上下文)。和返回(上下文)
}
我希望我的散列看起来像以下两种:
{metadata: {SOME_UNKNOWN_KEY: {transaction_id: 123456}}}
{metadata: {transaction_id: 123456}}
如果我正在寻找键:transaction\u id,我知道我可以使用hash\u include来期望嵌套键应该位于特定位置,但我希望能够这样做以涵盖这两个选项:
expect(something).
to receive(some_method).
with(has
我对这次考试有信心:
require 'rails_helper'
require 'support/factory_girl'
RSpec.describe 'users/new', type: :view do
before(:each) do
assign(:user, create(:user))
end
it 'renders new user form' do
render
assert_select 'fo
我有一个评论和用户模型的关联(属于:user并且有很多:评论)。在注释中,它抛出了一个错误。
注释模型:
class Comment < ApplicationRecord
belongs_to :post
belongs_to :user
validates :post_id, presence: true
validates :body, presence:true, length: {minimum: 4}
end
用户工厂
require 'faker'
FactoryBot.d
标签: Rspec
ruby-on-rails-5
在我的rails应用程序中,will_paginate gem用于对文章进行分页。它显示每页10篇文章。因此,我写信来检查分页是否显示每页10篇文章
最初我创建了12个帖子。和
我已经查过第二页了。无论是显示所有帖子还是显示2个帖子。它只显示了2个帖子
it 'does paginate records' do
12.times {FactoryBot.create(:post, topic_id: topic.id, user: controller.current_user)}
ge
我正在rails中做一个简单的应用程序,没有使用cucumber
我有一个用户故事:
Scenario: add new expense
Given I am on the expenses page
When I follow "new expense"
Then I am on new expense page
Then I fill in "expense_title" with "french fries"
Then I fill in "expense_catego
我正在设置回形针宝石的测试,部分说明如下:
在spec_helper.rb中,您需要匹配器:
require "paperclip/matchers"
并包括模块:
Spec::Runner.configure do |config|
config.include Paperclip::Shoulda::Matchers
end
我想知道我是否应该粘贴:
Spec::Runner.configure do |config|
config.include Paperclip::Shou
有没有办法让我的RSpec测试以随机顺序运行,但让它们以一致的顺序显示
我已经在ruby/rails的测试NitrousIO盒中安装了rspec。我正在尝试运行一个简单的测试,但出现错误:
action@testbox-11814:~$ rspec thetest.rb
/home/action/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_r
有没有办法重写这个规范
expect(subject.root.name).to eq('DEMDataSet')
expect(subject.root.elements[0].name).to eq('dAgency.Group')
expect(subject.root.elements[0].elements[0].name).to eq('dAgency.02')
expect(subject.root.elements[0].eleme
我有以下代码:
def self.create_new_tenant(tenant_params, user_params, coupon_params)
tenant = Tenant.new(:name => tenant_params[:name])
if new_signups_not_permitted?(coupon_params)
raise ::Milia::Control::MaxTenantExceeded, "Sorry, new accounts n
我对RubyonRails还很陌生。我不知道如何在每次测试中显示时间流逝。现在我正在研究RSPEC和黄瓜。我通过运行命令rake来运行所有测试。当每个测试执行时,我希望它显示一个计时器。我想显示每个特定测试所经过的时间。我们能像一个全局函数那样监听每个测试过程吗
请帮助我。您有两种选择,我建议您使用第一种,因为Rspec已经提供了这一选择
1.使用rspec--profile
这是Rspec的内置功能,将向您显示10个最慢规格的时间。阅读更多细节
2.使用全局前/后
您还可以创建自己的解决方案,
我有一个方法get_something,它返回一个复杂的对象。我想检查这个复杂对象的特定公共属性是否为字符串
这就是我知道我可以测试的原因:
require 'rspec/autorun'
class MySubject
ComplexObject = Struct.new(:type, :trustworthiness)
def get_something
ComplexObject.new('serious', 100)
end
end
RSpec.describe
我有一个Rails应用程序,使用Angular JS渲染视图,我正在使用Rspec、Jasmine和Capybara测试这个应用程序,使用PhantomJS通过Poltergeist作为驱动程序。本地所有测试都100%通过,但偶尔当有人推送应用程序并在TravisCI上执行测试时,至少有一个javascript测试会失败,并出现以下错误:
Capybara::Poltergeist::DeadClient:
PhantomJS client died while processing {
我希望rspec花费一定的时间,然后返回。例如,下面是一个逻辑行,表示我希望rspec模拟对some\u方法的调用,并在1秒后返回true。可能吗
expect(MyClass).to receive(:some_method).consume_time(1).and_return(true)
用来操纵时间。使用来模拟方法的主体
expect(MyClass).to receive(:some_method) do
Timecop.travel(Time.now + 1)
true
e
我已经成功地将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的比较
我使用的主要是脚手架生成的RSpec规范,它正在失败,但不应该失败。以下是规格:
describe "PUT update" do
describe "with valid params" do
it "updates the requested invoice" do
invoice = Invoice.create!
Invoice.any_instance.should_receive(:update_attributes).with({
标签: Rspec
capybarasaucelabs
为了更快的测试和访问更多的设备,我希望通过sauce实验室运行我的rspec capybara测试。但是,我在rspec中顺序运行it块时遇到问题。我通常在不同it块中测试页面的不同功能,如下所示:
describe 'website ordering' do
it 'should have items listed on page' do
// test steps to check if item is on page
end
it 'should be able t
标签: Rspec
mockingziprspec-railsstubbing
我的程序从网上下载一个zip文件,然后解析它。相关解析相关代码为:
Zip::File.open("real_file.zip") do |zip_file|
# do stuff
end
在我的RSpec测试环境中,我希望将这段代码存根以解析一个伪/模拟文件,而不是真实的文件。具体来说,我想将参数值“real_file.zip”替换为“mock_file.zip”
我尝试了以下方法:
allow(Zip::File).to receive(:open).and_return(Zip::F
我的页面上有以下代码:
<div class="row column filter-tab">
<div id="filter-button" class="button"><%= fa_icon 'filter' %></div>
</div>
我收到了可怕的消息
Capybara::ElementNotFound:
Unable to find css "#filter-button"
如果我在测试中放置断点,我可以
简单rspec测试:
it "should login" do
fill_in 'email', with: 'tom@domain.com'
fill_in 'password', with: '123456'
click_on I18n.t('ui.pages.login')
expect(current_path).to eq('/projects')
end
问题是:Chrome只输入“12456”并跳过“3”-无论我做什么
我尝试了以下方法:
在填写电子邮件
上一页 1 2 ...
6 7 8 9 10 11 12 ...
下一页 最后一页 共 27 页