2013-09-27 2 views
1

일부 단위 테스트를 작성하고 나와 함께 곰을 씁니다. 저는 여전히 단위 테스트를 처음 접했습니다.웹 사용자로 로그인 한 Yii 유닛 테스트

내가 가진 문제는 많은 절약이
사용자 ID Yii::app()->user->id에서 필요한 동작을 호출한다는 것입니다. 내가 유닛 테스트를 실행할 때

그러나 나는 사용자가 로그인하지 않는 한 (예를 들면 if ($isInTestingMode)를) 나는 플래그에 의해 동작을 무시할 수 있습니다

. 문제 어쨌든 있나요 가져 오거나 테스트 내에서 사용자 로그 수업?

+0

내가하는 방식은 로그인 한 사용자에 대한 테스트 집합이며 로그인하지 않은 사용자에 대한 설정은 설치 방법에 차이가 있습니다. 하나는 사용자를 기록하는 코드를 포함합니다. . . – ernie

답변

1

아마도 테스트에서 사용하는 사용자 개체를 만들 것입니다. 그리고 적절한 테스트에서 (ernie가 그의 설명에서 설명한 것처럼 setup 메소드의 일부로) 테스트 사용자 오브젝트를 스왑합니다.

public function getId() { 
    return 12; 
} 

public function getIsGuest() { 
    return false; 
} 

는 그들이 '가짜'개체를 호출 것입니다 :

테스트 사용자 개체는 다음과 같이 작동하는 방법을 것이다. 당신의 설정 방법은 다음 줄을 사용하십시오에서

:

Yii::app()->configure(array(
    'components' => array(
     'user' => array(
      'class' => 'path.to.FakeUser', 
     ) 
    ) 
)); 
당신이 기본 사용자가되고 싶어요 (다음 CWebUser/WebUser 정상에 교체하는 경우에도 테스트 설정 파일에 그것을 추가 할 수 있습니다

모델에 로그인하지 않은 사용자가 있어야합니다.

또는 각 단위 테스트에서 FakeUser에 대해 설정 한 플래그 (isLoggedIn = true/false)가있을 수 있습니다.이 옵션을 직접 사용해 보겠습니다. ...

1

이러한 테스트는 단위 테스트가 아닙니다. 에스. 단위 테스트는 클래스의 개별 함수를 테스트하기위한 것입니다. "로그인 한 사용자"는 많은 양의 코드 (로그인, 세션 관리, 특정 페이지로 이동 등)를 다루고 있습니다. 나는 당신이 기능 테스트를 찾고 있다고 생각합니다. 여기에 대한 자세한 내용은 여기를 참조하십시오. http://www.yiiframework.com/doc/guide/1.1/en/test.functional

+0

즉, user-> id를 호출하는 단일 메소드를 어떻게 테스트할까요? – physicalattraction

+0

당신은 그 속성이 어떻게 사용되는지 테스트 할 것입니다. 예를 들어,이 메소드가'user-> id'의 결과를 반환하면'user-> id'의 값이 반환 값과 일치하는지 확인할 수 있습니다. 또는 함수가 다른 함수 호출에서 해당 값을 사용하는 경우 호출되는 두 번째 함수를 스텁 (stub)하여 원하는 인수로 호출되는지 확인할 수 있습니다. –

관련 문제