0

我用 rspec 测试,我还在学习,我想我是在正确的方式......但是当我测试我的 rspec 文件时,我得到了这个错误:

 Failures:

1) UsersController signup with valid information should create a user
 Failure/Error: expect { click_button submit }.to change(User, :count).by(1)
   count should have been changed by 1, but was changed by 0
 # ./spec/controllers/user_controller_spec.rb:31

Finished in 1.16 seconds

2个例子,1个失败

我知道这意味着什么,但我不知道如何解决它,任何人都可以帮我解决这个问题...另外我把我的 rspec 文件

require 'spec_helper'

describe UsersController do


describe "signup" do

before { visit new_user_registration_path }

let(:submit) { "Sign up" }

describe "with invalid information" do
  it "should not create a user" do
    expect { click_button submit }.not_to change(User, :count)
  end
end

describe "with valid information" do
  before do
    fill_in "Email", :with=> "user@example.com"
    fill_in "Password", :with=> "foobar"
    #fill_in "password_confirmation", :with=> "foobar"
  end

(这是出现错误...下一行)

      it "should create a user" do
         expect { click_button submit }.to change(User, :count).by(1)
      end
   end
  end
end

感谢您的关注

4

1 回答 1

0

所以,你有一个失败的规范。规范本身看起来不错。所以我会检查

  • 实施到位了吗?您可以在浏览器中尝试该场景。它在那里工作吗?如果没有,您的测试失败(这很好)并且需要添加实现。
  • 如果实施有效,请再次仔细检查规范。是否提供信息

    fill_in "电子邮件", :with=> "user@example.com" fill_in "密码", :with=> "foobar"

    足以创建用户?

  • 如果您仍然没有找到原因,您可以使用 capybaras save_and_open_page (为此安装launchy gem)并在测试期间查看页面。

添加:

好的,正如我所说,这应该是一个集成测试 - 将其从规范/控制器移动到规范/请求文件夹(并更改第一行,因为您没有描述用户控制器!但这不应该导致问题)。

于 2012-07-26T14:28:28.907 回答