2016-05-31 3 views
0

현재 루비에 대한 테스트 케이스에서임이 작동 중이며 전달중인 매개 변수가 내 컨트롤러로 전달되지 않음을 알았습니다.테스트 컨트롤러가 매개 변수를 전달하지 않음

이 내 컨트롤러 내 테스트 케이스 인

test "should get addUser" do 
    user_info = User.create_user("TEST1","TEST1") 
    assert_equal(user_info,true,"Assert Failed") 

User.create_user 결과는도 2 개의 주장을 도시하지만 하나만 어설 선언

def self.create_user(username,password) 
    if username == "" || password == "" and username == nil || password == nil 
     register = User.new({:username => username,:password => password}) 
    end 
    return register.save 
end 

포함한다.

+1

유효성을 검사 할 클래스 조치를 작성하는 대신 사용자 모델에서 유효성 검증을 사용해야합니다. 유효성 검사를 사용하면 User 객체가 저장 될 때마다 확인되므로 간단히 시작/복구하고 훨씬 간단한 작업 만 수행 할 수 있습니다. – ArtOfCode

답변

0

문제는 당신의 상태에있다 :

if username && password && !username.empty? && !password.empty? 

unless ['', nil].include?(username) || ['', nil].include?(password) 

윌 모두 작동합니다.

if username == "" || password == "" and username == nil || password == nil 
-

unless username.blank? || password.blank? 

: 여러 공간의 경우

마지막으로, 레일에, 당신이 사용할 수있는 blank?는 (일반적으로 사용자 이름과 암호에 대한 좋은 생각입니다)뿐만 아니라 유효한 값이 아닙니다

(사용자 이름 또는 비밀번호가 비어있는 경우) 및 (사용자 이름 또는 비밀번호가 nil 인 경우에만) 다음과 같은 조합 만 통과합니다.

{ password: '', username: nil } 
{ password: nil, username: '' } 

2 개의 어설 션에 관해서는 더 많은 코드가 필요합니다. 여기에 테스트가 끝나면 사라집니다.

+0

레일스에서'blank?'함수는 nil 또는 empty를 테스트하는 조건을 단순화/정리합니다. –

+0

사실이지만 '' '.blank?'도 마찬가지입니다. 내 대답 편집하기 – floum

관련 문제