생성자 인수에 따라 다르게 응답하는 클래스가있는 경우 해당 클래스의 스펙을 작성하려면 어떻게해야합니까?생성자 인수에 따라 다르게 동작하는 클래스의 사양 작성
class Route
{
function __construct($url, array $methods = array())
{
// stores methods and url in private member variables
// creates a regex to match $url against incoming request URLs
}
public function isMatch($url)
{
// checks if the incoming request url matches against this url
}
}
사용 예 : 나는 phpspec에서하자 기능을 사용하여이 클래스 내 사양을 설정하면
$a = new Route('/users/:id');
$a->isMatch('/users/1') // returns true;
$b = new Route('/users');
$b->isMatch('/users') // returns true
가 :
이class Route extends ObjectBehaviour
{
function let()
{
$this->beConstructedWith('/users/:id')
}
}
내 사양 만 확인할 수있는 경우이의 행동 클래스는 하나의 경우에서 작동합니다.
필자는이 문제를 해결하기 위해 setter 메서드를 추가 할 계획을 세웠지 만 테스트 목적으로 캡슐화를 중단하는 것처럼 보입니다.
나는 이것에 접촉하는 것을 찾기 위해 고심하고 있습니다. 그래서 이것은 아마도 나쁜 코드 냄새 상황이라고 생각하기 시작했습니다.
beConstructedWith()는 let() 메서드에서 항상 호출 할 필요는 없습니다. 사양에서 호출 할 수도 있습니다. –