이것은 테스트 중심의 Nodejs 개발에 대한 훌륭한 고급 비디오 자습서입니다!
이 튜토리얼의 코드는 Github에서 찾을 수 있습니다. PHP 7.1로 테스트했습니다.
프로젝트 설정
이 특정 전처리 스크립트를 사용하면 PSR-4의 자동로드 된 클래스 (경로에서/file.php ⇒ Path/to/File.pre)를 제공하는 기능으로 옵트 인으로 바꿀 수 있습니다. 그래서 Composer.json 파일에 다음을 추가했습니다.
composer require pre/short-closures
그런 다음 현재 사용자 세션의 세부 사항이 포함 된 함수를 생성하기 위해 클래스를 추가했습니다.
"autoload": { "psr-4": { "App\": "src" } }, "autoload-dev": { "psr-4": { "App\Tests\": "tests" } }
에서 나옵니다
이것이 작동하는지 확인하려면 작은 샘플 스크립트를 설정했습니다.
<<> 부수적으로,이 사전 처리기는 효과적인 PHP 구문을 생성합니다. 이렇게 보인다 :
<<>
에서 비롯됩니다
에서 비롯됩니다
<...> 이것과는 별도로 ... <🎜 🎜>
<'s> 그런 다음 테스트 스크립트를 만들어 봅시다 : <🎜 🎜>
이 스크립트는 Symfony Finder (SRC를 스캔하고 폴더를 테스트하는 데 사용)를 만듭니다. 우리는 임시 변경 파일을 정의했지만 우리가하고있는 일에 엄격하게 필요하지 않습니다. 다음으로 무한 루프를 사용합니다. ResourceWatcher에는 파일이 생성, 수정 또는 삭제되었는지 확인하는 데 사용할 수있는 메소드가 있습니다.
에서 비롯됩니다
에서 비롯됩니다
이 테스트 관찰자는 또한 멋진 부작용을 가능하게했습니다. PHPUnit 테스트에서 전처리/변환을 사용하는 기능. Tests/bootstrap.php : <🎜 🎜>에 일부 코드를 추가하면
namespace App;
use Closure;
class Session
{
private $user;
public function __construct(array $user)
{
$this->user = $user;
}
public function closureWithUser(Closure $closure)
{
return () => {
$closure($this->user);
};
}
}
에서 나옵니다
이 코드 섹션은 작은 요점을 설명하기에 많은 것입니다. 세션 클래스에는 하나의 폐쇄를 받아들이고 다른 폐쇄를 반환하는 폐쇄 방법이 있습니다. 호출되면이 새 폐쇄는 원래 폐쇄를 호출하여 사용자 세션 배열을 매개 변수로 제공합니다.
require_once __DIR__ . "/vendor/autoload.php";
$session = new App\Session(["id" => 1]);
$closure = ($user) => {
print "user: " . $user["id"] . PHP_EOL;
};
$closureWithUser = $session->closureWithUser($closure);
$closureWithUser();
<<>… 그리고 <🎜 🎜>
<<> PHP와 프리 파일을 리포지토리에 제출하고 싶지 않을 수도 있습니다. 이를 위해 앱/**/*. php 및 examples.php를 .gitignore에 추가했습니다. require_once __DIR__ . "/vendor/autoload.php";
Pre\Plugin\process(__DIR__ . "/example.pre");
php loader.php
$closure = function ($user) {
print "user: " . $user["id"] . PHP_EOL;
};
이것은 src/blackbox.pre 에서 나옵니다
public function closureWithUser(Closure $closure)
{
return [$closure = $closure ?? null, "fn" => function () use (&$closure) {
$closure($this->user);
}]["fn"];
}
composer require pre/short-closures
"autoload": {
"psr-4": {
"App\": "src"
}
},
"autoload-dev": {
"psr-4": {
"App\Tests\": "tests"
}
}
에서 비롯됩니다
에서 비롯됩니다
이 코드는 BootStrap 파일에서 수행하는 것과 유사하지만 변경된 파일에만 적용됩니다. 파일이 변경되면 테스트를 다시 실행해야합니다.
namespace App;
use Closure;
class Session
{
private $user;
public function __construct(array $user)
{
$this->user = $user;
}
public function closureWithUser(Closure $closure)
{
return () => {
$closure($this->user);
};
}
}
require_once __DIR__ . "/vendor/autoload.php";
$session = new App\Session(["id" => 1]);
$closure = ($user) => {
print "user: " . $user["id"] . PHP_EOL;
};
$closureWithUser = $session->closureWithUser($closure);
$closureWithUser();
보상 라운드!
에서 비롯됩니다
composer require pre/short-closures
결론 <🎜 🎜> 나는 그러한 테스트 관찰자를 만들기 전에 너무 많은 전처리 작업을 수행했다고 믿을 수 없습니다. 이것은 우리가 다른 언어와 프레임 워크에서 배울 수있는 것을 증명합니다. JavaScript 프로젝트에 참여하지 않으면 각 테스트가 실행되기 전에 파일을 계속 재건 할 수 있습니다. 메스꺼움!PHP (FAQ)의 JavaScript 스타일 테스트 관찰자의 FAQ
이 방법이 효과적입니까? 비동기 HTTP 서버 또는 기타 장기 실행 프로세스에 적응할 수 있습니다. 의견에서 당신의 생각을 알려주십시오. PHP에서 JavaScript 스타일 테스트 관찰자를 설정하는 방법은 무엇입니까?
"autoload": { "psr-4": { "App\": "src" } }, "autoload-dev": { "psr-4": { "App\Tests\": "tests" } }
위 내용은 PHP에서 JavaScript 스타일의 테스트 감시자를 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!