使用Rails 4.0和Rspec 2.14.2的ActionController :: Integration Deprecation警告

时间:2013-07-13 16:53:11

标签: ruby-on-rails rspec2 ruby-on-rails-4

我正在使用Rspec 2.14.2为我的Rails 4.0应用程序编写请求规范,每当我尝试运行这些测试时,它们都能正常工作,但在命令行上吐出这个弃用警告:

DEPRECATION WARNING: ActionController::Integration is deprecated and will be removed, use ActionDispatch::Integration instead. 

正如我所说,这些规格完美无缺,我在网上找不到任何可以解决此弃用警告的内容,所以我的猜测是我的规范代码存在问题。我的spec文件如下

require 'spec_helper'

describe "Authenticating" do

  it "should create a new authentication" do
    expect {
      visit "/auth/developer"
    }.to change { Authentication.count }.by(1)
  end

  it "should create a new user" do
    expect {
      visit "/auth/developer"
    }.to change { User.count }.by(1)
  end

  it "should create a new device" do
    expect {
      visit "/auth/developer"
    }.to change { Device.count }.by(1)

    Device.last.registration_id.should_not be_nil
  end

  describe "with an existing user and authentication" do

    before do
      @test_user.authentications.create(:provider => "developer", :uid => "my@email.com")
    end

    it "shouldn't create a new authentication" do
      expect {
        visit "/auth/developer"
      }.not_to change { Authentication.count }.by(1)
    end

    it "shouldn't create a new user" do
      expect {
        visit "/auth/developer"
      }.not_to change { Authentication.count }.by(1)
    end

    it "should create a new device" do
      expect {
        visit "/auth/developer"
      }.to change { Device.count }.by(1)

      @test_user.devices.last.registration_id.should_not be_nil
    end

  end

end

当然,弃用警告不会影响我的测试的实际功能,但每当我运行rspec spec时它们出现时它们都很烦人,我真的很想摆脱它们

谢谢!

3 个答案:

答案 0 :(得分:1)

我怀疑您使用的是Webrat,答案是从Webrat转移到Capybara

截至目前,Webrat近一年没有更新。

据称,它就像编辑Gemfile一样简单。但实际上,您可能不得不重写大部分验收规范(正如我目前所要做的那样)。

如果您与Webrat结合,那么gem中的违规代码似乎是here。您可以随时修复它并提交拉取请求。

但是转向更新更新的Capybara宝石似乎是一个更好的想法,长期。

答案 1 :(得分:0)

您使用的是Webrat吗?如果是这样,请尝试使用Capybara将其替换为gemfile。如果这样做,请确保将以下内容添加到RSpec.configure块中的spec_helper.rb:

config.include Capybara::DSL

至少,这就是让警告消失的原因......在使用M. Hartl的Rails Tutorial源代码时,得到了上述内容。

答案 2 :(得分:-1)

在这些文件中打开,查找和替换:

rspec.rb world.rb

查找:ActionController 替换为:ActionDispatch

在我的发行版中,这些文件位于:

/home/>>>>>> YOUR USER NAME HERE <<<<<<</.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/cucumber-rails-1.3.0/lib/cucumber/rails/

/home/>>>>>> YOUR USER NAME HERE <<<<<<</.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/cucumber-rails-1.3.1/lib/cucumber/rails/

或者只是在终端中找到“locate”的文件,例如

$ locate rspec.rb

如果找不到,请先尝试:

$ sudo updatedb