我有以下設(shè)置:Symfony 5 項(xiàng)目,帶有 codeception 4。我正在嘗試為新創(chuàng)建的服務(wù)創(chuàng)建測(cè)試。問(wèn)題是我在嘗試測(cè)試時(shí)收到以下錯(cuò)誤。Test tests/integration/Shop/NewServiceCest.php:testSomethingStep Grab service "App\Service\NewService"Fail Service App\Service\NewService is not available in container服務(wù)代碼如下(基本上是空的):<?phpnamespace App\Service;class NewService{ public function __construct() { }}測(cè)試代碼如下(同樣,基本上是空的):<?phpnamespace App\Tests\Integration\New;use App\Exception\NewException;use App\Service\NewService;use App\Tests\IntegrationTester;class NewServiceCest { private NewService $newService; public function _before(IntegrationTester $i) { $this->newService = $i->grabService(NewService::class); } public function testSomething(IntegrationTester $i) { // $i->expectThrowable(NewException::class, $this->newService->doStuff('invalidArgument')); }}集成測(cè)試 yml:actor: IntegrationTestermodules: enabled: - Symfony: app_path: 'src' environment: 'test' - Doctrine2: depends: Symfony cleanup: true dump: 'tests/_data/integration.sql' populate: true reconnect: true - \App\Tests\Helper\Integration - Asserts我試圖清除緩存,重新創(chuàng)建它等等。我能從 cli 中想到的一切,包括(當(dāng)前路徑是項(xiàng)目目錄):$./bin/console c:c$./bin/console c:c --env=test$rm -rf var (this should do nothing but still tried it)$rm -rf tests/_support/_generated$./bin/console cache:warmup --env=test$./vendor/bin/codecept build當(dāng)我運(yùn)行測(cè)試時(shí),同樣的問(wèn)題。使它起作用的是將服務(wù)注入某處(例如在控制器中),執(zhí)行控制器,然后使用 ./vendor/bin/codecept 構(gòu)建。在我完成這些步驟之后,測(cè)試按預(yù)期工作。一個(gè)明顯的問(wèn)題是我正在嘗試創(chuàng)建一個(gè)用于部署的管道,在該管道中我提出了一個(gè)測(cè)試環(huán)境(干凈,在部署到服務(wù)器之前運(yùn)行中),運(yùn)行測(cè)試,并確保一切正常。將所有服務(wù)注入某個(gè)地方只是為了能夠構(gòu)建不是一種選擇(但我可以接受任何 cli 選項(xiàng),包括運(yùn)行大多數(shù)命令)。更奇怪的是,在我這樣做之后,即使我清理了緩存(var 和 _generated),現(xiàn)在測(cè)試也能按預(yù)期工作。就像它會(huì)將某些東西保存在我似乎找不到的不同地方(找不到任何相關(guān)的配置,而 google 和 bing 讓我失望了)。那么......為什么會(huì)發(fā)生這種情況,我怎樣才能可靠地讓它工作?
2 回答

明月笑刀無(wú)情
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
問(wèn)題是,Symfony 將從編譯的容器中刪除未使用的服務(wù)。我推薦這個(gè)問(wèn)題以獲取更多信息:https ://github.com/symfony/symfony-docs/issues/9890

泛舟湖上清波郎朗
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
觀察到相同的行為。$I->grabService(NewService::class)
只要您不在代碼中的其他地方使用此服務(wù)(例如注入某些控制器等),新創(chuàng)建的服務(wù)在 codeception 中不可用。
- 2 回答
- 0 關(guān)注
- 133 瀏覽
添加回答
舉報(bào)
0/150
提交
取消