Tag: rspec

使用RSpec获取未初始化的常量错误。 不知道是什么导致了它

我正在使用RSpec进行测试,当我周五下午离开工作时,我的测试正在通过。 但当我回家并同步我的存储库时,我的笔记本电脑上的测试失败了。 现在回到工作岗位,测试仍然失败。 不要相信它的代码,因为运行rspec本身会返回错误,spork甚至不会启动。 当我尝试启动Spork时,收到以下错误消息: Using RSpec Loading Spork.prefork block… uninitialized constant ActionView::Template::Handlers::ERB::ENCODING_FLAG (NameError) /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/rspec-core-2.2.1/lib/rspec/core/backward_compatibility.rb:20:in `const_missing’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:85:in `’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:70:in `’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:28:in `’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:27:in `’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:6:in `’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers.rb:10:in `extended’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template.rb:99:in `extend’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template.rb:99:in `’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template.rb:8:in `’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template.rb:6:in `’ :29:in `require’ :29:in `require’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/resolver.rb:3:in `’ :29:in `require’ :29:in `require’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/testing/resolvers.rb:1:in `’ :29:in `require’ :29:in `require’ /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/rspec-rails-2.2.1/lib/rspec/rails/view_rendering.rb:1:in `’ :29:in […]

rspec +工厂模型测试嵌套属性

我有一个带有rspec + factory_girl的rails4应用程序。 我想测试validation,确保产品至少有一个function,竞争,用例和行业。 前3个必须属于产品,但行业可以独立存在。 我还没有试过把工业放在测试中,因为我甚至不能把工作放在前3。 我尝试了下面的方法,在其中我创建了一个具有product_feature,product_competition和product_usecase的产品工厂。 由于某种原因,它不起作用。 我使用正确的方法吗? 如果是这样,我的代码出了什么问题? 1) Product nested attribute validation has a valid factory Failure/Error: expect(create(:product_with_nested_attrs)).to be_valid ActiveRecord::RecordInvalid: Validation failed: You have to choose at least 1 industry., You must have at least 1 product feature., You must name at least 1 competition., You must describe at least 1 usecase. […]

在向Rails4应用程序添加授权后,RSpec控制器规范失败

在Railscast #385 & #386之后,我在Rails 4应用程序中添加了授权(rails 4.2.6,rspec-rails 3.4.2)。 添加授权后,我的所有控制器规格都会失败。 我的function规格仍然通过,因为在规范中我以admin身份登录以执行不允许访问者的操作(:edit,:update …)。 如果我允许访客进行所有操作,我的控制器规格就会通过。 但是,只有管理员才能执行的任何操作都将在控制器规范中失败。 脚手架发电机产生空的 let(:valid_session) { { } } 它在评论中说: #这应该返回应该在会话中的最小值集合,以便传递MyController中定义的任何filter(例如,身份validation)。 但是,我不知道如何配置:valid_session允许身份validation通过。 当我尝试在这个问题中发布的解决方案: def valid_session controller.stub!(:signed_in?).and_return(true) end 我收到此错误: NoMethodError: undefined method `stub’ for #<MyController 因为,逻辑的所有分支路径都应该在较低级别(即控制器规范)而不是function规格上进行测试,如何让控制器规格通过? 如何配置valid_session或我可以使用哪种方法在控制器规范中传递授权?

I18N的基本设计规范

我是RSpec的新手,并尝试编写一个简单的测试,显示Devise正在工作。 我选择了一个随机页面,想要编写一个测试,显示未登录的用户被重定向到/ users / sign_in。 describe OrgsController do describe “GET index when not logged in” do it “redirects to new_user_session_path” do user = FactoryGirl.create(:user) user.confirm! sign_in user sign_out user get :index response.should redirect_to new_user_session_path end end before(:each) do user = FactoryGirl.create(:user) user.confirm! sign_in user end # remaining specs end 我得到”Expected response to be a redirect […]

Rails – 枚举字段的测试validation

我正在使用Rails 4枚举,我想正确测试它们,所以我为枚举字段设置了这些测试: it { should validate_inclusion_of(:category).in_array(%w[sale sale_with_tax fees lease tax_free other payroll]) } it { should validate_inclusion_of(:type).in_array(%w[receivable payable]) } 这是他们正在validation的模型: class Invoice < ActiveRecord::Base belongs_to :user enum category: [:sale, :sale_with_tax, :fees, :lease, :tax_free, :other, :payroll] enum type: [:receivable, :payable] validates :user, presence: true validates :issue_date, presence: true validates :series, presence: true validates :folio, presence: true […]

Rspec控制器具有相同名称的命名空间

我有以下设置: class UsersController < ApplicationController … end class Admin::BaseController < ApplicationController … end class Admin::UsersController < Admin::BaseController … end 同样的规格: #spec/controllers/users_controller_spec.rb: describe UsersController do … end #spec/controllers/admin/users_controller_spec.rb describe Admin::UsersController do … end 所有规格在独立运行时运行良好,但是当我一起运行时,我收到警告: toplevel constant UsersController referenced by Admin::UsersController 管理员控制器的规格没有通过。 路线文件: … resources :users namespace “admin” do resources :users end … Rails 4,Rspec 2.14 我可以不为不同命名空间中的控制器使用相同的名称吗?

undefined局部变量或方法`root_path’

我在我的rspec文件中有以下代码块位于/ spec文件夹的根目录中。 require ‘spec_helper’ describe “home” do subject { page } before(:each) { visit root_path } describe “page” do it { should have_title(‘My Page’)} end end 当我跑它时,我得到了 undefined local variable or method `root_path’ 这没有任何意义。 当我按照rails教程时,类似的设置工作得很好。 有人可以帮忙吗? 编辑: 我的路线包括 root “static#home” 编辑2: 重新打开此主题。 将我的根声明移到顶部并没有解决它。 编辑3: 什么工作包括我的rspec配置中的url_helpers。 我以前从来没有这样做过。 任何人都可以回答为什么这有效

除了在Rails测试中使用Capybara和RSpec之外,Steak还能添加什么?

我正在努力了解牛排的必要性。 我得到它像Cucumber,除了你可以使用纯ruby而不是像Cucumber一样将你的英语语言规范映射到ruby,但是它说它主要是在RSpec DSL周围增加一个包装,并让你使用它 取自: http : //jeffkreeftmeijer.com/2010/steak-because-cucumber-is-for-vegetarians/ module Spec::Example::ExampleGroupMethods alias scenario example alias background before end module Spec::DSL::Main alias feature describe end 这就是全部? 我从例子中可以看出,你仍然在使用Capybara和RSpec匹配器进行繁重的工作。那么为什么不直接使用Capybara和RSpec而不是在它上面添加像Steak这样的复杂function呢? 英语语言接受规范描述是唯一的价值主张,还是我错过了其他什么? 谢谢

RSpec View测试:如何修改params?

我试图用RSpec测试我的观点。 导致我麻烦的特定视图会根据url参数更改其外观: link_to “sort>name”, model_path(:sort_by => ‘name’)导致http://mydomain/model?sort_by=name 我的视图然后使用这个参数: Sorted by Name RSpec看起来像这样: it “should tell the user the attribute for sorting order” do #Problem: assign params[:sort_for] = ‘name’ render “/groups/index.html.erb” response.should have_tag(“div”, “Sorted by Name”) end 我想在RSpec中测试我的视图(没有控制器),但我无法将此参数输入到我的params变量中。 我试着assign各种口味: assign[:params] = {:sort_by => ‘name’} assign[:params][:sort_by] = ‘name’ … 到目前为止没有成功。 每个想法都受到赞赏。

在rspec特征测试中使用Devise

我写了以下rspec特性测试规范: require “rails_helper” RSpec.describe “Team management”, type: :feature do user_sign_in describe “User creates a new team” do … expect(page).to have_link(“#{team_name}”) end end user_sign_in方法在我的rails_helper.rb定义: ENV[‘RAILS_ENV’] ||= ‘test’ require ‘spec_helper’ require File.expand_path(‘../../config/environment’, __FILE__) require ‘rspec/rails’ require ‘capybara/rails’ … module UserSignInHelpers def user_sign_in before(:each) do @request.env[‘devise.mapping’] = Devise.mappings[:user] @current_user = FactoryGirl.create(:user) @current_user.confirm sign_in :user, @current_user end end end […]