2013-02-10 77 views
0

Ruby新手试图与rspec,rails,cucumber握手。在rspec中测试模型发现者的方法

我不知道这是为什么返回以下错误:

1) User can be found by username 
Failure/Error: user.should_not be_valid 
NoMethodError: 
    undefined method `valid?' for nil:NilClass 
    # ./spec/models/user_spec.rb:26:in `block (2 levels) in <top (required)>' 

从以下型号规格文件:

require 'spec_helper' 

describe User do 
    let(:user) { User.new(
     :username => 'username', 
     :password => 'password' 
    ) 
    } 

    it "should be createable" do 
    user.should be_valid 
    end 

    it "cannot have an empty username" do 
    user.username = nil 
    user.should_not be_valid 
    end 

    it "cannot have an empty password" do 
    user.password = nil 
    user.should_not be_valid 
    end 

    it "can be found by username" do 
    user = User.find_by_username('username') 
    user.should be_valid 
    end 
    it "can be deleted" 
end 

我敢肯定这件事情简单,但我不能想办法?

回答

1

在您的let调用中,您需要实际“创建”用户。你只是建立它没有保存。所以,当你调用

user = User.find_by_username('username') 

即返回nil作为记录不会被保存,无法找到。

另外,#find_by_username是Rails的一部分,你并不需要测试它。

+0

啊,谢谢。我知道这将是简单的我错过了。 – djjjuk 2013-02-11 09:35:54