Saya mempunyai kaedah foo() ini dan saya perlu menambah kes ujian unit untuk kaedah ini testFoo() dalam Magento. Tetapi Mage::getSingleton('checkout/cart') tidak boleh disimulasikan.
Kaedah sumber
public function foo()
{
return Mage::getSingleton('checkout/cart')->getQuote()->getFunctionName();
}
Fungsi ujian
public function testFoo(): void
{
//$this->className :: Project_Catalog_Helper_Test
$expected = 'string';
$this->className->method('getSingleton')->willReturn($this->cart);
$this->cart->method('getQuote')->willReturn($this->cart);
$this->cart->method('getFunctionName')->willReturn('string');
$this->assertEquals(
$this->className->foo(),
$expected
);
}
Apabila saya menjalankan php-unit saya mendapat log ralat ini.
MacBook-Pro % ./vendor/bin/phpunit tests/src/app/code/local/project/Catalog/Helper/OrderTest.php PHPUnit 6.5.14 by Sebastian Bergmann and contributors. Runtime: PHP 7.3.11 Configuration: /project_path/phpunit.xml.dist E 1 / 1 (100%) Time: 150 ms, Memory: 8.00MB There was 1 error: 1) Project_Catalog_Helper_Test::testFoo Error: Call to a member function getCode() on bool /project_path/app/code/core/Mage/Customer/Model/Session.php:103 /project_path/app/code/core/Mage/Core/Model/Config.php:1394 /project_path/app/Mage.php:517 /project_path/app/Mage.php:531 /project_path/app/code/community/Checkout/Model/Cart.php:20 /project_path/app/code/local/project/Catalog/Helper/Order.php:21 /project_path/tests/src/app/code/local/project/Catalog/Helper/OrderTest.php:100 /project_path/vendor/phpunit/phpunit/phpunit:53
Perlukan beberapa penyelesaian, cara mensimulasikan Mage::getSingleton('checkout/cart').
Nota: Saya tidak boleh menukar kaedah utama kerana ia adalah kod warisan. Hanya tambah kes ujian unit.
1 jawapan
Anda tidak boleh mengejek Mage::getSingleton('checkout/cart') kerana ia adalah fungsi statik dalam ruang nama global.
Namun, anda boleh menyuntik olok-olok menggunakan metaprogrammingsuntik olok-olok kad pembayaran. Kemudian pulihkan singleton asal di lokasi tersebut.
Bandingkan dengan Soal Jawab sedia ada yang diwarisi daripada EComDev Testsuite, yang sepatutnya mempunyai lebih banyak petunjuk tentang cara mengendalikan struktur dalaman menggunakan PHP Reflection.
Alat panas Tag
Hot Questions
Hot Tools
vc9-vc14 (32+64 bit) koleksi perpustakaan masa jalan (pautan di bawah)
Muat turun koleksi perpustakaan runtime yang diperlukan untuk pemasangan phpStudy
VC9 32-bit
VC9 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu
Kotak alat pengaturcara PHP versi penuh
Programmer Toolbox v1.0 PHP Persekitaran Bersepadu
VC11 32-bit
VC11 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Topik panas





