Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ruby mine中的Rspec测试总是返回false_Ruby On Rails_Ruby_Testing_Rspec - Fatal编程技术网

Ruby on rails ruby mine中的Rspec测试总是返回false

Ruby on rails ruby mine中的Rspec测试总是返回false,ruby-on-rails,ruby,testing,rspec,Ruby On Rails,Ruby,Testing,Rspec,我有一个类用户,如下所示 class User < ActiveRecord::Base has_one :session has_and_belongs_to_many :posts has_and_belongs_to_many :replies attr_accessor :clear_text_password; validates_presence_of :username validates_uniqueness_of :username va

我有一个类用户,如下所示

class User < ActiveRecord::Base

  has_one :session
  has_and_belongs_to_many :posts
  has_and_belongs_to_many :replies

  attr_accessor :clear_text_password;

  validates_presence_of :username
  validates_uniqueness_of :username
  validates :clear_text_password, :presence => true, :length => {:minimum => 6}
  validates_confirmation_of :clear_text_password

  validates_presence_of :e_mail
  validates_uniqueness_of :e_mail

  def User.authenticate(name, password)
    if user = find_by_username(name)
      if user.password == encrypt_password(password)
        user

      end
    end
  end

end 

数据库表用户的用户名和密码为“abcd”和“abcdef”。但测试总是失败。方法调用总是返回false。请帮忙

rspec针对测试数据库运行,并且可能在每次测试之前清空。您是否在“开发”或“测试”数据库中输入了测试数据?一件体面的事情是在测试中创建数据。如果你想让同一个用户进行多次测试,只需将其放在“before”方法中即可。上面froderick的评论很可能是你问题的解决方案。对于记录,不要使用所有的逻辑(if/else,
c=false
),只需使用
User.authenticate('xxx','xxx')。不应为空
require 'spec_helper'
require 'rspec'
require 'rspec-rails'
require 'user'

describe User do
  describe "my first test" do
    it "should redirect if user is authenticated" do
      user = User.authenticate('abcd','abcdef')
      c=false
      if user
        c=true
      end
      c.should == true

    end
  end
end