Thư viện này cung cấp một không gian tên cho các hàm được gọi trên toàn cầu, như các hàm tích hợp PHP
Điều này nghe có vẻ kỳ lạ, vì vậy hãy để tôi giới thiệu một ví dụ để cho thấy những gì nó có thể làm
Ví dụ
Hãy tưởng tượng rằng bạn có một ứng dụng sử dụng rand[0, 1]
và bạn muốn khẳng định điều gì sẽ xảy ra khi nó trả về 0
hoặc
composer require rogervila/global-namespace0
Hãy xây dựng lớp học đó
class App { public function run[] { $result = rand[0, 1]; if [$result == 0] { // do something when $result is 0 } else { // do something else when $result is 1 } } }
Nếu bạn tạo một bài kiểm tra để xác nhận kết quả, bạn sẽ tìm thấy nút chặn. Làm cách nào chúng tôi có thể mô phỏng rand[] để buộc nó trả về 0 hoặc 1?. Gói này cung cấp một giải pháp cho câu hỏi này
Đầu tiên, yêu cầu gói này trên ứng dụng của bạn
composer require rogervila/global-namespace
Bây giờ, hãy cập nhật ứng dụng của bạn thành tiền tố
composer require rogervila/global-namespace1 với không gian tên chung
composer require rogervila/global-namespace2 sẽ chỉ gọi hàm PHP tích hợp để hành vi ứng dụng của bạn sẽ không thay đổi
use PHP\PHP; class App { public function run[] { $result = PHP::rand[0, 1]; //... } }
Điều này hoạt động như mong đợi nhưng vẫn chưa hoàn toàn có thể kiểm tra được vì phần phụ thuộc
composer require rogervila/global-namespace3 được mã hóa cứng và không thể giả lập
Hãy thêm nó vào hàm tạo để chúng ta có thể sử dụng bất kỳ triển khai
composer require rogervila/global-namespace3 nào
________số 8_______
Đẹp. Giờ đây, bạn có thể mô phỏng
composer require rogervila/global-namespace1 bằng Mockery và xác nhận mã ứng dụng
final class AppTest extends \PHPUnit\Framework\TestCase { public function test_rand_returns_one[] { // Create a mock of the package class $php = Mockery::mock[\PHP\PHP::class]; // Define its return value $php->shouldReceive['rand'] ->once[] ->andReturn[1]; // Now rand[] always returns 1 $this->assertEquals[ 1, $php::rand[] ]; // Create the instance with the mocked PHP implementation $app = new App[$php]; // Do your application assertions here // ... } }
Kiểm tra ứng dụng demo này để có ví dụ đầy đủ hơn
Về
Thư viện này gọi bất kỳ chức năng toàn cầu nào, không chỉ những chức năng được tích hợp sẵn
use PHP\PHP; // PHP Built-in functions PHP::http_build_query[['foo' => 'bar']]; // returns 'foo=bar' PHP::json_encode[['foo' => 'bar']]; // returns '{"foo": "bar"}' PHP::json_decode['{"foo": "bar"}']; // return ['foo' => 'bar'] // etc... // For WordPress projects PHP::wp_redirect['/'] // redirects to home // etc... // Literaly, any function, built-in or not, could be listed here
Lớp trợ giúp
Nếu bạn không muốn sử dụng Mockery hoặc nếu bạn đang làm việc trên môi trường thử nghiệm không phù hợp với nó, bạn có thể sử dụng một số lớp trợ giúp đi kèm với gói này