0

rspec、レール、キュウリを理解しようとしている Ruby の初心者です。

これが次のエラーを返す理由がわかりません。

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_usernameRails の一部であるため、実際にテストする必要はありません。

于 2013-02-10T22:03:17.397 に答える