2010-12-08 28 views
0

HII零誤差,如何解決rspec的

我有一個零error.My控制器代碼是一個問題,這樣的

def list 
    @users=User.find(params[:id]) 

    if (@users.servers.count>0) 
    puts 'more than one' 
    else 
    puts 'equal or less than one' 
    end 
end 

我Rspec的代碼是

it'should_test_list' do 
    @user_mock=mock(User) 
    User.should_receive(:find).and_return(@user_mock) 
    @user_mock.should_receive(servers).and_return(@user_mock.servers) 
    @user_mock.servers.should_receive(:count).and_return(1) 
end 

我我得到警告,@user_mock.servers是零

我還想問一個問題,這是正確的方式t他的問題?

我在等待答覆

回答

0

您還沒有存根上User模擬的servers方法,所以規範不能從該點繼續。修復它像這樣:

@user_mock.stub(:servers).and_return([mock])。或者在創建模擬時添加它。

此外,您的規格從不調用控制器操作。你需要一個get :list。例如:

describe UsersController do 
    it 'should list' do 
    @user_mock = mock(User,:servers=>[mock]) 
    User.should_receive(:find).and_return(@user_mock) 
    @user_mock.servers.should_receive(:count).and_return(1) 
    get :list, :id => 1 
    end 
end 

最後一個音符:我假設在@users = User.find(params[:id])你的真正用意@user,因爲返回只有一行。

相關問題