0

Ruby 新手在这里试图掌握 rspec、rails、cucumber。

我不确定为什么会返回以下错误:

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

我确定这很简单,但我无法弄清楚?

4

1 回答 1

1

在您的let通话中,您需要实际“创建”用户。您只是构建它而没有保存。所以当你打电话

user = User.find_by_username('username')

这是返回nil,因为记录未保存且无法找到。

此外,#find_by_username它是 Rails 的一部分,您实际上不需要对其进行测试。

于 2013-02-10T22:03:17.397 回答