단위 테스트 시나리오에서 클로저 직렬화를 처리하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-10-24 04:10:02
원래의
781명이 탐색했습니다.

How to Handle Serialization of Closures in Unit Testing Scenarios?

예외: '클로저' 직렬화

단위 테스트 시나리오에서 _initMailer 내부 클로저와 관련된 테스트 실행 중에 예외가 발생했습니다. 방법. 이 예외는 PHP 테스트 환경 내에서 허용되지 않는 클로저 직렬화와 관련이 있습니다.

구체적으로 클로저는 Zend_Mail_Transport_File 인스턴스 내에서 콜백 함수로 사용됩니다:

$callback = function()
{
    return 'ZendMail_' . microtime(true) .'.tmp';
};
로그인 후 복사

해결책 1: 일반 함수 사용

한 가지 해결책은 클로저를 일반 함수로 바꾸는 것입니다.

function emailCallback() {
    return 'ZendMail_' . microtime(true) . '.tmp';
}
$callback = "emailCallback" ;
로그인 후 복사

해결책 2: 배열을 사용한 간접 메서드 호출 변수

또는 배열 변수를 통해 간접 메서드 호출을 사용할 수 있습니다.

$callback = array($this,"aMethodInYourClass");
로그인 후 복사

이는 콜백이 호출될 때 aMethodInYourClass 메서드가 호출된다는 의미입니다.

위 내용은 단위 테스트 시나리오에서 클로저 직렬화를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿