2012-07-23 112 views
0

我想用RSpec在Ruby on Rails上测试我的应用程序控制器。我没有使用水豚(因为许多人使用它)。这是我的天赋测试:为什么我会得到“未定义的方法`访问”“?

require 'spec_helper' 

describe UserController do 

it "create new user" do 
    get :create, :user => { :email => '[email protected]', :name => 'userexample' } 
    flash[:notice] = 'new user was successfully created.' 
end 
    describe "signup" do 

    before { visit new_user_registration_path } 

    let(:submit) { "Create my account" } 

    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 "Name",   :with=> "Example User" 
    fill_in "Email",  :with=> "[email protected]" 
    fill_in "Password",  :with=> "foobar" 
    fill_in "Confirmation", :with=> "foobar" 
    end 

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

这里是我的Usercontroller

class UserController < ApplicationController 
def index 

end 

def new 
    @user = User.new 
end 

def create 
    @user = User.new(params[:user]) 
    if @user.save 
     redirect_to user_session_path 
    else 
    redirect_to new_user_session_path 
end 

end 

def show 
    @user = User.find(params[:id]) 
    #redirect_to @user 
end 
end 

当我测试了它,我得到了错误:undefined method 'visit'

Failure/Error: before { visit new_user_registration_path } 
NoMethodError: 
    undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1::Nested_2:0x132cefbc0> 
# ./spec/controllers/user_controller_spec.rb:11 

回答

0

您必须使用水豚的这个功能。我认为你的测试不在正确的地方。你必须为此做请求规范。这不适用于控制器规格。请参阅文档:https://github.com/rspec/rspec-rails/

+0

以及我必须测试控制器,什么是请求规格? – Asantoya17 2012-07-23 19:15:17

+0

您是否在文档中搜索过它?它与集成测试基本相同:http://guides.rubyonrails.org/testing.html#integration-testing。它用于测试视图,控制器和模型之间的集成。 – Dougui 2012-07-23 19:21:05

+0

你是否知道我可以学习使用rspec测试的任何页面,因为我不知道这么多。 – Asantoya17 2012-07-23 19:28:20

相关问题