我编写了一个简单的测试,如下所示:
require 'spec_helper.rb'
describe Channel do
before(:each) do
@channel = Channel.new
end
it "should get the true view count" do
upload_view_count = double('upload view count')
upload_view_count.should_receiv
我正在阅读Bigg和Katz的《Rails 3 in Action》,这是我第一次使用RSpec、Cucumber和Capybara
RSpec团队大胆地说:“所以我一直在遵循书中的概念,因为RSpect不再提供像path.rb或web\u steps.rb这样的初始步骤
我的问题是如何创建一条路径,就像在一个将水豚放在所需页面上的规范中一样
在这本书中,它被告知将以下内容放在path.rb中(由RSpec提供)
年,Aslak指出,他发布了一本书,旨在为处于你这种情况的人解决这个问题。我建议您
有人知道一种不用清理数据库就可以使用FactoryGirl的方法吗?换言之,在使用工厂的同时保留完整的现有记录?编辑:尝试这样做会产生数据库错误,因为新ID与数据库中的现有ID冲突
我想最大的问题是让FG使用数据库的底层序列/自动增量功能。(以前测试失败的错误数据与我无关。)
这类似于,但我对任何方法都持开放态度。Rails应用程序的标准RSpec行为是在每个示例之后回滚数据库事务。这可以在spec/rails\u helper中配置:
RSpec.configure do |config|
当我想要运行标记的测试时,我使用
rspec spec --tag smoke_test_not_present
我的系统中有一个关于旧宝石的错误。一个常见的错误
列出并通常有效的解决方案是使用bundle exec
我想运行标记的测试
因此,我:
bundle exec rspec spec --tag smoke_test_not_present_this_does_not_exist
但是所有的测试都会运行,不管我引用的(不存在的)标记是什么
我得到:
$ bundle exec rs
从旧rspec语法转换为新语法:
旧的:
使用较新的expect语法,it部分应该是什么样子?使用expect语法,测试将是:
it { is_expected.not_to be_valid }
请注意,对于单行程序语法,仍然支持should语法(即无弃用警告),因此不必进行任何更改。从:
is_expected仅定义为expect(subject),专为使用rspec expections及其新的基于expect的
语法
should是在rspec期望只有基于should的语法时设计的。
我是ruby/rails的新手,在一次任务中,我在命令行中遇到了以下错误:
-bash:rspec:未找到命令
我在安装rspec gem后收到此错误:
gem安装rspec
以下是我尝试过的几件事:
-bash:rspec:command未找到Jackies MacBook Pro:Addressbloc jackieturner$aptitude安装libgemplugin ruby
-bash:aptitude:command未找到Jackies MacBook Pro:addressbl
我刚刚开始研究Spinach BDD框架,我真正想做的一件事是生成一个类似于rspec选项的结果HTML页面:
--格式化html
--out rspec_results.html
有人知道用菠菜来达到这个目的吗?
谢谢 我发现有人创建了格式化程序。
我发现有人创建了格式化程序。
问题
失败
Capybara::ElementNotFound:这看起来应该可以正常工作,因此该元素可能没有足够快地显示在页面上。您可以尝试将Capybara.default\u max\u wait\u time设置为类似30的值并重试吗?您可以在spec\u helper.rb中为其编写一个示例,您可以通过添加Capybara.default\u max\u wait\u time=30来设置默认等待时间。然后重新运行测试,看看是否通过。
<span _sort="view.sub_d
我在本地运行这些东西:
ruby: 2.5
bundler: 2.0.1
rspec: 3.8
我正在尝试使用CircleCI对许多文件运行测试,但是没有一种文档化的方法可以运行
TESTFILES=$(circleci tests glob "spec/**/*.rb" | circleci tests split --split-by=timings)
bundle exec rspec -- ${TESTFILES}
给出:
An error occurred while loadin
如何使会话在RSpec测试中工作
我试过这样的方法:
describe "createnewlist_route_spec" do
include Rack::Test::Methods
use Rack::Session::Pool
def app
@app ||= Sinatra::Application
end
it "should save listitem to database" do
post '/addnewlistitem', {:i
我有一个Rails 2.3.X项目正在进行中。在我的系统上,我也有各种版本的rspec:
rspec(2.4.0,1.3.1)
rspec核心(2.4.0)
rspec期望值(2.4.0)
rspec模拟(2.4.0)
rspec钢轨(2.4.1、1.3.3、1.3.1)
然而:
> spec _1.3.1_ spec/
Missing these required gems:
rspec-rails
安装rvm并为wo项目创建不同的版本。您可以为这些项目使用单独的绑定程序。您
标签: Rspec
controllersscaffold
我正在学习rspec教程(peepcode教程)。我制作了一些脚手架,我希望有人能帮助解释如何重新编写描述,让新手看得更清楚一点
describe "POST create" do
describe "with valid params" do
it "assigns a newly created weather as @weather" do
Weather.stub(:new).with({'these' => 'params'}) { mock
在转到ruby 1.9.2并覆盖我之前,我使用的是rcov。我们不倾向于对控制器进行单元测试,而是依赖于覆盖率。使用rcov,可以汇总Cumber和rspec运行的覆盖率结果。这可能是我的封面吗?这是我最后制作的Rakefile,你可以获得rspec、cucumber或两者的组合的封面:
namespace :cover_me do
task :report do
require 'cover_me'
CoverMe.complete!
end
task :all
我可以通过以下方式为请求编写cookie:
request.cookies['foo'] = 'bar'
但这些都不起作用:
request.cookies.permanent['foo'] = 'bar'
request.cookies.signed['foo'] = 'bar'
request.cookies.permanent.signed['foo'] = 'bar' # what I really want
我收到空的散列消息,如以下消息:
NoMethodError:
u
在我的档案里
group :development, :test do
gem 'capybara', "1.1.2"
gem 'database_cleaner', "0.7.0"
gem 'cucumber', "1.1.2"
gem 'cucumber-rails', "1.2.0"
gem 'rspec-rails', "2.7.0"
gem 'spork', "0.9.0.rc9"
gem 'launchy' #launches the page
有谁知道在test::unit和rspec的:let和:let!?例如
context "foo" do
let(:user) { Factory(:user) }
it "bar" do
...
end
end
我希望在编写test::unit tests时使用这种方便的模式。
提前谢谢。像这样的东西送给let:
def user
@user ||= Factory(:user)
end
对于在测试之间不缓存的let,您将需要与上面相同的定义,并在设置中或拆卸中执行
标签: Rspec
mockingstubbingfaraday
我有一个这样的模型:
class Gist
def self.create(options)
post_response = Faraday.post do |request|
request.url 'https://api.github.com/gists'
request.headers['Authorization'] = "Basic " + Base64.encode64("#{GITHUB_USERNAME}:#{GITHUB_PASSWOR
我想在控制器规范中设置auth_令牌值。我有以下内容:
describe ApiEditController do
before do
session[:auth_token]='abc123' # doesn't work
end
it 'should edit item' do
# lets create a location
#....
end
end
但是当我检查会话时,我没有提到auth_令牌:
{"format"=>"json",
我试图用RubyTest包在我的sublime text 3上运行rspec测试,但我遇到了这个错误
The system cannot find the path specified.
[Finished in 0.0s with exit code 1]
[cmd: ['rspec spec\\requests\\static_pages_spec.rb -l15']]
[dir: H:\Sites\wedding_app]
[path: C:\ImageMagick-6.8.7
我有这个html.erb Rails表单:
<h1 class=new_vendor_header>New Vendor Form</h1>
<%= form_for(@vendor) do |f| %>
<%= f.label :name %>
<%= f.text_field :name, placeholder: "ex: Jeff" %>
<%= f.submit "Submit" %>
<% e
我想对不同的请求参数使用相同的uri,我如何才能做到这一点?
下面的示例似乎不起作用(
从文档中可以看出,with子句是不正确的(您应该使用body:{email:foo@bar.de“}或类似内容)
根据文档所述,with子句不正确(您应该使用正文:{email:foo@bar.de“}或类似内容)
stub_request(:post, "http://tests/1/users/create").
with({email: 'wrong_format'}).
我一直在摆弄Guard,试图让它加载rspec测试,但它抛出了一些关于测试模式的错误
我意识到我在后台的另一个终端窗口中对整个测试套件运行rspec(大约需要30分钟)。我看了看,这些测试也抛出了错误(预计不会)
是否只有一个“测试”数据库,两个rspec执行都会弄乱,从而导致彼此失败?或者我可以不必担心地同时运行进程吗
标签: Rspec
ruby-on-rails-5capybara
rails5.0.4ruby 2.5.1rspec3.7capybara
我需要一些关于创建工厂以及如何在我的功能规格中使用它们的帮助。我总是遇到同样的问题,当我认为我已经解决了,我又遇到了同样的问题
型号:
customer.rb
has many jobs
job.rb
belongs to customer
has_many hours
hour.rb
belongs to job
工厂:
#customer.rb
FactoryGirl.define do
factor
我的代码中有以下模式:
关键是我们需要以静默方式记录错误,但是如果代码中有错误,测试就需要失败
begin
self.a_method_call
some_other_object.a_method_that_has_been_refactored
rescue StandardError => e
Rails.logger.error e.backtrace
end
如果由于self.a\u method\u call和some\u other\u object.a\u m
我正在试火车。我正在使用
网站了解更多关于rails3的信息;本教程从一开始就非常好(我对rails2的经验很少)
我与rspec有一个问题,目前阻碍了我的进度。我看到教程推荐使用rspec2.0.0.beta.18 gem;我改为使用安装rspec2.0.0.beta.20 gem
bundle install
但是,我发现这个版本的rspec存在问题
我的集成测试rspec如下所示:
describe "LayoutLinks" do
it "should have a About p
我正在尝试在Rails 3.0 RubyMine 3.1中安装cucumber插件,但仍然无法安装它。我想安装cucumber,以便RubyMine 3.1 IDE可以像生成脚手架一样生成cucumber
参考:
提前谢谢 如果您已经安装了正确的gems rails、rspec、cucumber等,您应该能够通过RubyMine运行rails生成器
Ctrl+Alt+G应该会显示对话框窗口。之后,只需在动态下拉菜单中选择“生成器”选项。您将看到另一个对话框,询问发电机选项。类型:cumber:安
看起来这些别名没有正确加载。我正在使用Rails3.X、RSpec2.8和Capybara1.1.2编写一些集成测试。
我认为我的Capybara安装是成功的,因为它可以使用标准的“descripe”和“it”标记,但是来自Capybara的“feature”和“scenario”别名会抛出一个“undefined method”错误
我在文档中没有看到任何提及更多配置的内容:
我只是在spec_helper.rb中添加了'require capybara/rspec',似乎无法将descrip
在使用RSpec时,是否有任何方法可以消除任何存根和模仿
例如:
RestClient.should_receive(:delete).with("http://www.example.com")
...
...
# this will remove the mocking of "should_receive" and
# restore the proper "delete" method on "RestClient".
RestClient.mocking_reset
(mock
标签: Rspec
mockingrspec-mocks
我试图在一些非常简单的Ruby上运行一个测试。我的linux机器上安装了ruby和rails。我还安装了rspec。我的创业板名单是:
LOCAL GEMS
actionmailer (3.2.8)
actionpack (3.2.8)
activemodel (3.2.8)
activerecord (3.2.8)
activeresource (3.2.8)
activesupport (3.2.8)
arel (3.0.2)
builder (3.0.0)
bundler (1.2.0,
我有一个Rails引擎,旨在为我们更大的项目提供一些模型和控制器。引擎有一套相当不错的规格,在引擎的虚拟应用程序中使用了一堆模拟和一些全尺寸模型和控制器,以确保引擎正在做它应该做的事情,并与更大的应用程序一起工作
然而,即使所有测试都通过了,当我在更大的应用程序中更新引擎时,我也经常发现行为不正常。如果我的测试通过了,但是行为被破坏了,很明显测试出了问题,但是什么呢?我嘲弄得太多了,还是不够
为了让我更清楚地了解这一点,我希望能够从完整的应用程序内部运行引擎的测试。这似乎应该是可能的,但我对rs
我正在我的小组模型上测试一种方法。它依赖于通过工厂创建一些徽章类型
这是密码
it "add itself to badges with method add_to_badgetypes" do
badge = FactoryGirl.create(:badgetype)
old_badge_ids = badge.group_ids.split(",")
badge2 = FactoryGirl.create(:badgetype, :group_ids => "
我正在编写一些请求规范(rspec2.13.1),并希望直接访问会话散列。我认为这在控制器规范中是可能的,但不确定这是否可以在请求规范中实现
describe 'Api' do
let(:user) { FactoryGirl.create(:user) }
session[:auth_token]=user.auth_token
我得到以下错误:
Failure/Error: session[:auth_token]=user.auth_token
我计划使用rspec进行集成测试,使用cucumber进行应用程序的验收测试。我希望对这两个对象使用相同的页面对象。我已经将我的页面对象放在lib目录中,并且我已经设法让cumber看到这些对象,但是由于某些原因,rspec无法看到lib文件夹中的对象
我尝试过使用require_all方法。因此,我的等级库助手具有以下功能:
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'require_a
我有一个像
describe MyClass do
it_behaves_like SharedClass, MyClass.new
end
在我的共享示例规范中,我有
shared_examples_for SharedClass do |instance|
before do
instance.some_my_class_method = double
end
# some specs here
end
MyClass实例中有几个方法无法存根到shared_ex
标签: Rspec
rspec-railspryrspec3pry-rails
我希望在执行rspec期间在我的控制台中打开一个pry会话。我做错什么了吗?还是期待错误的行为
档案:
group :development, :test do
gem 'rspec'
gem 'rspec-rails'
...
gem 'pry-rails'
...
end
Gemfile.lock:
...
pry (0.10.0)
...
rspec-rails (3.0.1)
规格:
控制台:
% rspec
...
Failed examples:
...
R
我已经编写了一个rails表单助手,但我不知道如何为它编写测试。有人能帮忙吗?这是帮助代码
module FormHelper
def dropdown(form, obj_symbol, options, selected_value)
form.select obj_symbol, options_for_select(options.collect { |s| [s[0].titleize, s[0]] }, selected: selected_value), {}, {:c
我想运行特定的rspec示例,并且已经在命令行中指定了行号来执行此操作。但是每次我改变一些东西,行号就会改变,这是一种痛苦
rspec能够通过“id”在命令行中使用以下语法运行特定示例或一系列示例:
rspec path/to/a_spec.rb[1:5,1:6] # run the 5th and 6th examples/groups defined in the 1st group
有没有办法让rspec列出所有示例ID,这样我就不需要手动梳理代码计数描述,上下文,it,场景,等等。手动
标签: Rspec
ruby-on-rails-5factory-bot
我是Rails测试新手,在测试我的关联时遇到了很大的困难。我只想为我可以在规范中创建的具有各种角色的确认用户创建工厂。我只想拥有user=create(:user\u superadmin)或user=create(:user\u accountadmin)的能力,但我很难做到这一点
以下是我在运行规范时遇到的错误:
Failure/Error: user = create(:user_superadmin)
NoMethodError:
undefined metho
我试图断言,input[type=hidden]在Rails请求规范中填充了一个值,但是水豚have_字段matcher返回“no matches”,即使我检查response.body字段肯定在那里
例如,我尝试了以下方法:
expect(response.body).要有_字段('after_create_path',with:'/some_path')
expect(response.body).to have_field('after_create_path',type::hidden,
标签: Rspec
ruby-on-rails-5.2http-token-authentication
轨道5.2
宝石:
我有以下控制器:
class RegistrationsController < ApplicationController
acts_as_token_authentication_handler_for User, only: [:start]
def start
binding.pry
if user_signed_in?
redirect_to edit_user_path(current_user)
e
标签: Rspec
rspec-railswebmock
我正在使用webmock编写测试,我需要模拟远程api以返回400状态,其中包含正文内容
如果我只是将状态从200更改为400,有一个body,我收到的状态将变为200
let(:stub_result) { { result: 'failed', reason: 'blabla' }.to_json }
let!(:quote_stub) {
stub_request(:post, 'http://example.com/rest')
基本上,这个问题与此类似:
我有这样的代码,它可以工作:
config.before :each do |test|
p test.example.metadata[:example_group][:full_description]
end
现在,我还需要从before:all中获取示例组名。我该怎么做?试试这个:
config.before :all do |test|
p test.class.metadata[:example_group][:full_descriptio
标签: Rspec
mockingstubbing
使用Rspec,我正在为@survey.description编写单元测试:
class Survey < ActiveRecord::Base
def description
if self.question.try(:description).present? && self.selected_input.present?
return self.question.try(:description).gsub("{{product-name}}"
我在编写一些规范时遇到了一个错误
QuestionsController GET #edit finds question to edit
Failure/Error: Question.should_receive(:find).with("#{question.id}").and_return(question)
(<Question(id: integer, title: string, body: text, created_at: datetime, update
假设我们在Padrino中有一个自定义FormBuilder,如下所示:
class CustomFormBuilder < Padrino::Helpers::FormBuilder::AbstractFormBuilder
def foo(arg1, arg2, ...)
# do something with #template
end
end
我不清楚如何做到这一点:
通常框架会实例化FormBuilder,所以我在这里这么做感觉不对。有更好的方法吗
我不知道如
我有两门课。
说出ServiceLayer.class和apiadapter.class:
public class ApiAdaptor {
public String getCountry(String latitude, String longitude) {
// REST call to api goes here and a the country string is returned
return country;
}
}
public class Ser
我有一个99%置信限的算法。所以如果我设置一个这样的测试
let(:valid_input_signal) { randomly_generate_signal_plus_noise }
it { expect(my_detector(valid_input_signal).signal_present?).to be true }
它将失败1%的时间。我可以编写一个测试,在数千个有效的输入信号上运行我的_检测器,并检查它只失败1%的时间,但这将需要很长时间才能运行,测试的目的不是检查算法是否
标签: Rspec
sidekiqwebmockexcon
我有一个相对简单的工人,他使用Excon从互联网上获取一些东西。我试图成为一名优秀的测试人员,并使用Webmock强制对internet交互进行存根,因此我实际上是在测试基于各种存根交互的代码应该做什么
我注意到RSpec没有捕捉到发生在工人内部的故障。这可能是我的代码,可能是个bug,我不确定
下面是一个简单的工作者示例(是的,我知道营救异常很糟糕,我将在下一步修复它):
include Sidekiq::Worker
sidekiq_选项队列:“获取文章内容”,重试:true,回溯:true
标签: Rspec
capybaracapybara-webkit
当我像这样运行:focus=>true时,效果很好:
it "should send by email to new user", :js => true, :focus => true do
...
end
然而,当我删除:focus=>true并运行完整的测试套件时,我在该测试中得到了这个错误
Failure/Error: Unable to find matching line from backtrace
这似乎与:js=>true有关,可能因为这是我开始使用它的第一
当我尝试为rspec的change方法编写一个oneliner时,出现以下错误:
预期结果已更改为nil,但未提供块
这是我的语法:
it { is_expected.to change(user.name).to nil }
什么是正确的语法?单行语法在这里没有意义。它用于检查对象的属性或方法返回值
但在这里,您要求检查属性是否更改为nil,这意味着您正在执行导致状态更改的某些操作,并且之前的值不是nil
只有一行不能指定该操作。正确的语法是
it "description" do
ex
1 2 3 4 5 6 ...
下一页 最后一页 共 26 页