Laravel 9.x에서 부분 조롱 사용 문제
P粉726234648
2023-09-02 23:28:57
<p>안녕하세요 laravel 개발자 여러분, 부분 모의 문제를 발견했습니다. 모의가 필요한 내부 메서드를 사용하는 메서드를 테스트해야 합니다. 다음 아이디어처럼 메서드를 모의하기 위해 여러 메서드를 사용해 보았습니다. < ; /p>
<pre class="brush:php;toolbar:false;">#1
$mockMyClass = 조롱::mock(
$myClassInstance
)->makePartial();
#2
$mockMyClass = $this->partialMock();
#삼
$mockMyClass = $this->createPartialMock();
// 그런 다음
$mockMyClass->shouldReceive('internalMethod')
->andReturn($responseInternalMethod);</pre>
<p>그리고 분명히 Laravel Mocking Objects 문서에 설명된 방식을 사용합니다</p>
<pre class="brush:php;toolbar:false;">AppService 사용;
MockeryMockInterface를 사용하세요.
$mock = $this->partialMock(Service::class, function (MockInterface $mock) {
$mock->shouldReceive('프로세스')->한 번();
});</pre>
<p>이 아이디어 중 어느 것도 작동하지 않습니다. $mockMyClass는 항상 $responseInternalMethod를 반환해야 하는 모의 메서드가 아닌 실제 메서드를 실행합니다. 누구든지 이 문제가 있습니까? 로컬 환경이 아닌 Laravel, Mockito 또는 외부의 문제인지 확인해야겠습니다. 하하. 나는 당신을 읽었습니다! </p>
<p>기술적 세부정보:
라라벨 9.x
PHP 8.1
PHP 유닛 9.5
도발 1.5</p>
좋아요, 해결책을 찾았지만 어쨌든 이 문제가 있는 사람이 있는지 알고 싶습니다
이 문제에 대한 나의 해결책은 다음과 같습니다.
으아악 이러한 경우에 대한 해결책은 내 클래스의 모의 인스턴스를 직접 만들고 생성자에 필요한 모든 매개 변수를 종속성 또는 데이터로 전달하는 것입니다. 그런 다음 모의 클래스를 실제 클래스로 사용하여 테스트 루프를 계속합니다.