Contao adalah sistem manajemen konten PHP open source untuk orang-orang yang menginginkan situs web profesional yang mudah dirawat. Kunjungi situs web proyek untuk informasi lebih lanjut.
Test case Contao menyediakan test case PHPUnit dengan beberapa metode yang berguna untuk menguji Contao. Jalankan php composer.phar require --dev contao/test-case
untuk menginstal paket dan kemudian menggunakannya di kelas pengujian Anda:
use Contao TestCase ContaoTestCase ;
class MyTest extends ContaoTestCase
{
}
Metode getContainerWithContaoConfiguration()
mengolok-olok wadah Symfony dengan konfigurasi default ekstensi inti Contao.
$ container = $ this -> getContainerWithContaoConfiguration ();
echo $ container -> getParameter ( ' contao.upload_path ' ); // will output "files"
Anda juga dapat mengatur direktori proyek:
$ container = $ this -> getContainerWithContaoConfiguration ( ' /tmp ' );
echo $ container -> getParameter ( ' kernel.project_dir ' ); // will output "/tmp"
echo $ container -> getParameter ( ' kernel.root_dir ' ); // will output "/tmp/app"
echo $ container -> getParameter ( ' kernel.cache_dir ' ); // will output "/tmp/var/cache"
Metode mockContaoFramework)
mengolok-olok kerangka kerja Contao yang diinisialisasi.
$ framework = $ this -> mockContaoFramework ();
$ framework
-> expect ( $ this -> atLeastOnce ())
-> method ( ' initialize ' )
;
Metode ini secara otomatis menambahkan adaptor Config dengan pengaturan Contao:
$ framework = $ this -> mockContaoFramework ();
$ config = $ framework -> getAdapter ( Contao Config::class);
echo $ config -> get ( ' datimFormat ' ); // will output "'Y-m-d H:i'"
Anda juga dapat menambahkan lebih banyak adaptor sebagai argumen:
$ adapters = [
Contao Config::class => $ configAdapter ,
Contao Encryption::class => $ encryptionAdapter ,
];
$ framework = $ this -> mockContaoFramework ( $ adapters );
Adaptor Config yang diberikan akan menimpa adaptor Config default.
Metode mockAdapter()
akan meniru adaptor dengan metode yang diberikan.
$ adapter = $ this -> mockAdapter ([ ' findById ' ]);
$ adapter
-> method ( ' findById ' )
-> willReturn ( $ model )
;
$ framework = $ this -> mockContaoFramework ([ Contao FilesModel::class => $ adapter ]);
Adaptor dengan nilai pengembalian sederhana seperti di atas dapat disederhanakan lebih lanjut:
$ adapter = $ this -> mockConfiguredAdapter ([ ' findById ' => $ model ]);
Kode ini berfungsi persis sama dengan kode di atas.
Metode mockClassWithProperties()
mengolok-olok kelas yang menggunakan metode ajaib __set()
dan __get()
untuk mengelola properti.
$ mock = $ this -> mockClassWithProperties ( Contao PageModel::class);
$ mock -> id = 2 ;
$ mock -> title = ' Home ' ;
echo $ mock -> title ; // will output "Home"
Jika kelas yang akan diejek bersifat read-only, Anda dapat meneruskan properti sebagai argumen konstruktor:
$ properties = [
' id ' => 2 ,
' title ' => ' Home ' ,
];
$ mock = $ this -> mockClassWithProperties ( Contao PageModel::class, $ properties );
echo $ mock -> title ; // will output "Home"
Jika Anda perlu memanggil metode dari kelas asli, Anda bisa meneruskan nama metode sebagai argumen ketiga. Objek tiruan yang dihasilkan akan menjadi objek tiruan sebagian tanpa metode yang diberikan.
$ mock = $ this -> mockClassWithProperties ( Contao PageModel::class, [], [ ' getTable ' ]);
$ mock -> id = 2 ;
echo $ mock -> getTable (); // will call the original method
mockTokenStorage()
mengolok-olok penyimpanan token dengan token yang mengembalikan pengguna ujung belakang atau ujung depan Contao.
$ tokenStorage = $ this -> mockTokenStorage ( Contao BackendUser::class);
$ user = $ tokenStorage -> getToken ()-> getUser ();
Metode getTempDir()
membuat direktori sementara berdasarkan nama kelas pengujian dan mengembalikan jalurnya.
$ fs = new Filesystem ();
$ fs -> mkdir ( $ this -> getTempDir (). ' /var/cache ' );
Direktori akan dihapus secara otomatis setelah pengujian dijalankan. Agar ini berfungsi, pastikan untuk selalu memanggil metode induk tearDownAfterClass()
jika Anda mendefinisikan metode tersebut di kelas pengujian Anda!
use Contao TestCase ContaoTestCase ;
class MyTest extends ContaoTestCase
{
public static function tearDownAfterClass ()
{
// The temporary directory would not be removed without this call!
parent :: tearDownAfterClass ();
}
}