최고의 방법이 유닛 테스트와 웹사이트에 여러 사용자가 형식으로 이 라이브러리

StackOverflow https://stackoverflow.com/questions/58969

  •  09-06-2019
  •  | 
  •  

문제

나는 시작을 사용하는 방법을 배우 이 라이브러리를 테스트하는 웹사이트에서 일하고 있어요.는 문제로 실행하는 다섯 가지 서로 다른 사용자 정의된 형식과 내가 필요할 수 있을 테스트하는 모든 클래스가 다른 유형이 있습니다.나는 현재 사용자는 클래스고 싶을 통과하는 각 기능을 하지만 나는 방법을 알아낼 수 없습니다를 통과하거나 테스트하는 다른 오류가 다시 올 수 있습으로 올바른 또는하지 않습니다.

편집: 난 말했다.나는 사용자류와 전하고 싶은 메시지를 다른 이 클래스의 인스턴스를 각 단위 테스트입니다.

도움이 되었습니까?

해결책

하는 경우 다양한 이용 클래스에서는 상속자 클래스,나는 추천을 사용하여 동일한 상속의 구조에 대한 귀하의 테스트 사례 클래스입니다.

다음 샘플을 참고하십시오 클래스:

class User
{
    public function commonFunctionality()
    {
        return 'Something';
    }

    public function modifiedFunctionality()
    {
        return 'One Thing';
    }
}

class SpecialUser extends User
{
    public function specialFunctionality()
    {
        return 'Nothing';
    }

    public function modifiedFunctionality()
    {
        return 'Another Thing';
    }
}

다음 작업을 수행할 수 있습니다 당신의 테스트는 케이스 클래스:

class Test_User extends PHPUnit_Framework_TestCase
{
    public function create()
    {
        return new User();
    }

    public function testCommonFunctionality()
    {
        $user = $this->create();
        $this->assertEquals('Something', $user->commonFunctionality);
    }

    public function testModifiedFunctionality()
    {
        $user = $this->create();
        $this->assertEquals('One Thing', $user->commonFunctionality);
    }
}

class Test_SpecialUser extends Test_User
{
    public function create() {
        return new SpecialUser();
    }

    public function testSpecialFunctionality()
    {
        $user = $this->create();
        $this->assertEquals('Nothing', $user->commonFunctionality);
    }

    public function testModifiedFunctionality()
    {
        $user = $this->create();
        $this->assertEquals('Another Thing', $user->commonFunctionality);
    }
}

기 때문에 각 시험에 따라 달라집을 만들는 방법 당신은 무시할 수 있기 때문에이 테스트 방법을 부모에서 상속 테스트 클래스의 모든 테스트에 대한 부모 등에 대해 실행됩 아동 클래스를 재정의하지 않는 한 그들을 변경하는 예상되는 동작입니다.

이것은 좋은 일 내에서 제한된 경험이다.

다른 팁

면 당신이 찾고있을 테스트하는 실제 UI,당신이 시도할 수 있습 같은 것을 사용하 셀레늄(www.openqa.org).그것은 당신이 쓰는 코드에서 PHP(나는 가정으로 이 라이브러리)에 드라이브 브라우저..

다른 접근을 하는 것이 일반적인 방법이 될 수 있는 호출하여 각각의 테스트를 다른 사용자의 유형입니다.즉,같은 것'ValidatePage',할 수 있는 그런 다음에서 전화 TestAdminUser 또는 TestRegularUser 및 방법은 단순히 수행 동일한 기본적인 검증의 무엇을 기대하고..

그냥 당신이 있는지 확인을 실행하지 않으로 anti-패턴 여기에.어쩌면 당신은 너무 많은 작업에서 생성자?나 어쩌면 이러한 사실 서로 다른 클래스?테스트 자주 당신에 대한 단서 디자인의 코드입니다. 그들의 말을 들어보세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top