亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 VSCode 在 docker 容器上更好地運行 phpunit

如何從 VSCode 在 docker 容器上更好地運行 phpunit

PHP
滄海一幻覺 2023-09-08 18:20:06
我正在嘗試使用更好的 phpunit 擴展從 vs code 在 docker 容器上運行 php 單元測試,但我無法讓它工作。到目前為止我所擁有的:-docker-compose.yml:-version: '3.1'services:    php:        build:            context: .            dockerfile: .docker/Dockerfile        image: laraboard        ports:            - 8000:80        restart: always        volumes:            - .:/var/www/html        networks:            - laraboard    mysql:        image: mysql:8.0        volumes:            - db_data:/var/lib/mysql        restart: always        ports:            - 3306:3306        environment:            MYSQL_DATABASE: laraboard            MYSQL_USER: root            MYSQL_PASSWORD: password            MYSQL_ROOT_PASSWORD: password        networks:            - laraboard    phpmyadmin:        depends_on:            - mysql        image: phpmyadmin/phpmyadmin        restart: always        ports:            - 8001:80        environment:            PMA_HOST: mysql            MYSQL_ROOT_PASSWORD: password         networks:            - laraboardnetworks:    laraboard:volumes:    db_data:設置.json:-"better-phpunit.docker.enable": true,    "better-phpunit.docker.command": "docker exec laraboard_php_1",    "better-phpunit.docker.paths": {        "c:/Users/Chris/Web/laraboard": "/var/www/html"    }ThreadTest.php:-<?phpnamespace Tests\Feature;use Illuminate\Foundation\Testing\RefreshDatabase;use Tests\TestCase;class ThreadsTest extends TestCase{    /** @test */    public function a_user_can_browse_threads()    {        $response = $this->get('/threads');        $response->assertStatus(200);    }}通過此設置,我收到錯誤:-OCI 運行時執行失?。簣绦惺。篶ontainer_linux.go:346: 啟動容器進程導致“執行格式錯誤”:未知終端進程“C:\Windows\System32\cmd.exe /d /c docker exec laraboard_php_1 /var/www /html/vendor/bin/phpunit.bat /var/www/html/tests/Feature/ThreadsTest.php --filter '^.*::a_user_can_browse_threads'" 終止,退出代碼:126。我哪里錯了?
查看完整描述

1 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

這使我找到了解決方法,我已接受他的答案,但仍想擴展它:-


我已經找到了解決方法,但仍然覺得必須有更好的方法,因為它仍然存在問題:-


第一個問題是我在 docker.command 中使用了容器名稱而不是服務名稱,并且我需要輸入 bash:


"better-phpunit.docker.command": "docker exec php bash",

然后我必須按照 @Florian Engelhardt 的建議更改 phpunit 二進制文件:-


"better-phpunit.phpunitBinary": "${workspaceFolderBasename}/vendor/bin/phpunit",

現在不再出現錯誤并顯示 phpunit 幫助,所以我知道我已經取得了進展。


然后我不得不更改套件命令(我不知道為什么,但這也修復了單個測試運行):-


"better-phpunit.suiteSuffix": "/var/www/${workspaceFolderBasename}/tests",

上面只是告訴 phpunit 測試 laravel 測試目錄中的所有內容,我希望它使用 phpunit.xml 配置文件,但無法讓它工作,我已經嘗試過,正如文檔所說,如果沒有找到配置,它將自動拉"/var/www/${workspaceFolderBasename}"取在 .xml 中,但它沒有,我已經嘗試過,"/var/www/${workspaceFolderBasename}/phpunit.xml"但這只是試圖測試 .xml。無論如何,上述解決方法有效,也許我會添加一個新問題phpunit.xml


運行測試后,我注意到顏色不再起作用,所以我添加了:-


"better-phpunit.commandSuffix": "--colors=auto"

我的 settings.json 現在看起來像:-


"better-phpunit.docker.enable": true,

    "better-phpunit.docker.command": "docker-compose exec workspace bash",

    "better-phpunit.docker.paths": {

        "${workspaceFolder}": "/var/www/${workspaceFolderBasename}"

    }, 

    "better-phpunit.phpunitBinary": "${workspaceFolderBasename}/vendor/bin/phpunit",

    "better-phpunit.suiteSuffix": "/var/www/${workspaceFolderBasename}/tests",

    "better-phpunit.commandSuffix": "--colors=auto"

現在討論問題,在測試運行時,到目前為止,我發現任何使用 POST 請求測試表單的測試都會由于 CSRF 令牌不匹配而失敗,而如果我手動運行 phpunit,它們不會失敗。我仍然需要一個更好的解決方案,但目前上述解決方案可以滿足我的需求,我只是將其用作運行單個測試然后手動測試套件的快速方法。


查看完整回答
反對 回復 2023-09-08
  • 1 回答
  • 0 關注
  • 118 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號