Tag: rspec

Rspec测试失败,truenthicate_client无法正常工作

我正在将遗留项目升级到rails 5,并且在失败的rspec测试中我有一个说: Failure/Error: expect(response).to be_redirect expected `#<ActionDispatch::TestResponse:0x00007fbe5fde51f0 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Thread::…ch::Http::Headers:0x00007fbe5fdde9e0 @req=#>>>.redirect?` to return true, got false # ./spec/controllers/search_controller_spec.rb:86:in `block (3 levels) in ‘ 我正在使用devise gem来validation客户端。 测试如下: describe SearchController do before(:each) do @client = FactoryGirl.create(:client) end describe “authenticated search” do # a bunch of tests end describe “unauthenticated search” do it “requires a user to be […]

如何测试方法别名ruby

如何测试方法是否有别名? 假设我们有 Class Test class << self def a;end alias :b :a end end 到目前为止,我想出了写这个规范的想法: it { expect(Test.b).to receive(:a) } 但我相信有更好的解决方案。 有任何想法吗?

Rspec spec和Rake规范给出了不同的结果

这似乎是主要问的问题,我有一个应用程序,当运行在rake spec和rspec输出似乎是不同的。 当使用rspec spec -p命令时,显示0失败消息,而当使用rake spec时,显示的错误很少。

缺少必需的参数:aws_access_key_id,aws_secret_access_key

我目前正在尝试在终端中运行我的测试套件,但是我收到以下错误: Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError) 我在我的项目中使用Carrierwave,我很确定这是导致问题的原因。 这是我的config / initializers / carrierwave.rb: CarrierWave.configure do |config| config.fog_credentials = { :provider => ‘AWS’, :aws_access_key_id => ENV[‘S3_ACCESS_KEY_ID’], :aws_secret_access_key => ENV[‘S3_SECRET_ACCESS_KEY’] } config.fog_directory = ‘my_directory’ end 这是我的日志: News-MacBook-Pro:music-app yedidyaweiner$ bundle exec rspec /Users/yedidyaweiner/.rvm/gems/ruby-2.1.3/gems/fog-core-1.27.2/lib/fog/core/service.rb:244:in `validate_options’: Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError) from /Users/yedidyaweiner/.rvm/gems/ruby-2.1.3/gems/fog-core-1.27.2/lib/fog/core/service.rb:268:in `handle_settings’ from /Users/yedidyaweiner/.rvm/gems/ruby-2.1.3/gems/fog-core-1.27.2/lib/fog/core/service.rb:98:in `new’ from /Users/yedidyaweiner/.rvm/gems/ruby-2.1.3/gems/fog-core-1.27.2/lib/fog/storage.rb:25:in […]

使用RSpec期望方法调用和代理到原始方法

我想发现缺少BDD:包括ActiveRecord :: Base.find方法的参数。 所以我的想法是在规范中有这样的东西: ActiveRecord::Base.should_receive(:find).once.and_proxy_to_original_method parent = SomeClass.find 34 parent.child.should be_loaded parent.other_children.should be_loaded 如果没有急切加载#child或#other_children关联,则期望会失败,例如:“预期的ActiveRecord :: Base.find被调用一次但是它被调用了2次以下args:1. …; 2。 ……” 有谁知道是否有一些像这样工作的匹配器或如何做到这一点。 谢谢

fill_in如何在Rspec / Capybara中运作?

我正在关注Michael Hartl的Ruby on Rails教程。 当我使用rspec / capybara时,fill_in方法让我感到困惑。 我有以下视图代码: 这是我的测试代码: fill_in “Name”, with: “Example User” 看来,fill_in需要label和text_field才能找到输入字段。 如果我取消f.label或将更改为 ,测试将给出ElementNotFound错误。 任何人都可以解释fill_in如何在这里工作? fill_in方法是否都需要输入字段和标签?

测试无法直接访问的RSpec控制器操作

我有一个无法直接访问的控制器,采用传统的RESTful方式,而只是通过特定的URL。 通常我习惯在我的控制器规范中使用get和post来调用控制器动作。 有没有办法通过访问特定url来运用我的控制器? 编辑: 这是我的路线: Larzworld::Application.routes.draw do match ‘/auth/:provider/callback’ => ‘authentications#create’ devise_for :users, :controllers => {:registrations => “registrations”} root :to => ‘pages#home’ end 这是我的规格: require ‘spec_helper’ describe AuthenticationsController do before(:each) do request.env[“omniauth.auth”] = {“provider” => “twitter”, “uid” => “12345678”} end describe ‘POST create’ do it “should find the Authentication using the uid and provider from […]

找不到生成器rspec_model问题

我正在尝试为我的模型用户创建一个rspec但每次运行时: rails g rspec_model User 我得到找不到生成器rspec_model。 我检查了另一个stackoverflow线程,它说确保我有gem’rspec-rails’,我这样做。 我究竟做错了什么? 这是我的gemfile: group :test do # Pretty printed test output gem ‘turn’, :require => false gem ‘rspec’, ‘2.0.1’ gem ‘webrat’, ‘0.7.1’ end group :development do gem ‘rspec-rails’, ‘2.0.1’ gem ‘sqlite3’ end

如何在capybara中使用execute_script时返回值?

我在测试中有一个非常简单的行,调用这样的执行脚本: puts page.execute_script(“return somefunction();”).to_i.inspect 在javascript我有这样的function: function somefunction(){ console.log(“test”); return 999; } 来自控制台日志的“测试”正在注销,因此它正在运行… 在运行测试时查看日志,execute_script返回0而不是999,所以在rspec中我无法获取函数的返回值,如何使page.execute_script从该函数返回该值?

使用rspec的login_as首次测试失败

按照Devise How-To页面的说明,我正在尝试重建我的所有rspec测试以绕过用户登录过程。 有两种方法可用于此: 来自Devise的sign_in – 不能用于function测试(Capybara) 来自Warden的login_as (Devise是建立在它之上) 第一次射击的第一种方法(所有测试通行证)除了与Capybara的那些,所以我决定暂时离开它。 第二个给了我一些奇怪的结果 – 除第一个之外的所有传球(我作为文件中的第一个传球)。 当我只运行其中一个时它失败了。 我已经使用binding.pry进行了检查,但由于用户未登录并且重定向到登录页面而失败。 不知何故,第一次测试会触发一些使其余部分通过的东西。 我不知道这里发生了什么。 我之前使用的around钩子,但它的行为非常奇怪所以我把它改为before设置(同时它的工作速度要快得多,因为它只在乞讨时创建一个用户而不是每次测试)。 这就是现在的样子: require ‘spec_helper’ describe AlbumsController do let(:album) { create(:album) } before(:all) do @user = create :user end before(:each) do login_and_switch_schema @user end after(:all) do destroy_users_schema @user destroy_user @user end describe “GET #new” do before { get :new } […]