0

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

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

正如我所说,规范运行良好,我在网上找不到任何东西来解决这个弃用警告,所以我的猜测是我的规范代码有问题。我的规格文件如下

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,我真的很想摆脱它们。

谢谢!

4

3 回答 3

1

我怀疑您正在使用Webrat,答案是从 Webrat 移到Capybara

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

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

如果您与 Webrat 结了婚,那么 gem 中的违规代码似乎就在这里。您可以随时修复它并提交拉取请求。

但从长远来看,迁移到更新的 Capybara gem 似乎是一个更好的主意。

于 2013-12-21T00:26:34.380 回答
0

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

config.include Capybara::DSL

至少,这就是让警告对我来说消失的原因......在 M. Hartl 的 Rails 教程源代码中探索时得到了上面的代码。

于 2013-11-15T19:29:42.267 回答
-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 rspec.rb

如果找不到,请先尝试:

$ sudo updatedb
于 2013-08-12T13:01:45.463 回答