스태킹과 치구의 차이점은 무엇인지 궁금하다. 둘 다 잘 정의 된 데이터를로드하고 kepp 테 스트를 간단하게로드하는 데 도움이됩니다.차이점 스터드 고정 장치
하지만 Codeception \ 백분율 \ 스텁 \ 를 사용하여 수행 할 때 내가 Codeception \ 백분율 \기구
스태킹과 치구의 차이점은 무엇인지 궁금하다. 둘 다 잘 정의 된 데이터를로드하고 kepp 테 스트를 간단하게로드하는 데 도움이됩니다.차이점 스터드 고정 장치
하지만 Codeception \ 백분율 \ 스텁 \ 를 사용하여 수행 할 때 내가 Codeception \ 백분율 \기구
\ 을 사용합니까 그래서 스텁 Codeception 모의 개체를 사용하는 것입니다. 즉, 조롱은 실제 객체의 동작을 시뮬레이션하는 객체를 만드는 것입니다. 우리가 BalanceRepsository 클래스가없는
class UpdateBalance
{
public $balanceRepository;
public function __construct(BalanceRepositoryInterface $balanceRepository)
{
$this->balanceRepository = $balanceRepository;
}
public function subtract($amount, $id)
{
$updatedAmount = $this->balanceRepository->subtract($amount, $id);
if ($updatedAmount < 0) {
throw NegativeBalanceException($updatedAmount, $id);
}
return $updatedAmount;
}
}
class UpateBalanceTest extends PHPUnit_Framework_TestCase
{
public function testSubtractThrowsNegativeBalanceException()
{
$balanceRepository = Stub::make(
'BalanceRepositoryInterface'
array(
'subtract' => Stub::atLeastOnce(function() { return -100 })
)
);
$updateBalance = new UpdateBalance($balanceRepository);
$this->expectException(NegativeBalanceException::class);
$updateBalance->subtract(100, 1);
}
}
참고 : 여기에
은 예입니다. 우리는 Codeception 스텁을 사용하고 BalanceRepository 클래스가 존재한다고 가장했습니다. 그것이 존재한다고 가장함으로써 NegativeBalanceException이 발생했는지 확인하여 UpdateBalance :: subtract 함수의 기능을 테스트 할 수 있습니다.다른 한편으로 설비는 모든 테스트에서 테스트 데이터를 공유하기위한 것입니다. 이제 우리는 우리의 미리 정의 된기구를 사용할 수 있습니다
// In some bootstrap or setup function
Fixtures::add('zero-amount', 0);
Fixtures::add('negative-amount', -1);
Fixtures::add('string-negative-amount', '-1');
class UpdateBalance
{
// ...
public function subtract($amount, $id)
{
if ($amount < 0) {
throw new
}
// ...
}
}
class UpateBalanceTest extends PHPUnit_Framework_TestCase
{
// ...
public function testSubtractThrowsCantSubtractNegativeAmountException()
{
$balanceRepository = Stub::make(
'BalanceRepositoryInterface'
);
$updateBalance = new UpdateBalance($balanceRepository);
$this->expectException(CantSubtractNegativeAmountException::class);
$updateBalance->subtract(Fixture::get('negative-amount'), 1);
}
}
: 우리가 UpdateBalance를 사용하는 경우 : 우리는 그것을 통해 전달되는 양에 따라 올바른 예외가 발생 보장 금액 필드의 스트레스 테스트를 수있는, 다시() 예를 빼기 모든 테스트에서 위의 예에서 비품을 사용하는 것이 과잉이라고 생각하지만, 16 진수 값을 확인하는 것과 같은 더 복잡한 테스트 데이터의 경우 유효하다는 점을 지적하고 싶습니다.
답변 해 주셔서 감사합니다. 올바른지 이해한다면 수정 (정적) 변수와 같은 코드 작성 도구에서 고정 장치를 사용하십시오. 그리고 물체를 시뮬레이션하기위한 스텁. 나는 그 스텁이 고정물이라는 것을 종종 읽으므로 혼란 스럽다고 생각한다. – astridx
나는 그것이 좋은 요약 예라고 생각한다! – thomasstuttard