代码之家  ›  专栏  ›  技术社区  ›  Blackbam

Codeception验收测试:如何处理具有多个子域和端口的应用程序?

  •  0
  • Blackbam  · 技术社区  · 4 年前

    actor: AcceptanceTester
    modules:
        enabled:
            # - WebDriver:
            - PhpBrowser:
                url: http://localhost
                port: 19080
            - \Helper\Acceptance
    step_decorators: ~        
    

    第一次测试:

    /**
     * Checks if the project is reachable and answers as expected.
     */
    class ProjectReachableCest
    {
        public function _before(AcceptanceTester $I): void
        {
            // do nothing
        }
    
        // tests
        public function frontpageWorks(AcceptanceTester $I): void
        {
            $I->amOnPage('/');
            $I->see("Customer doesn't exist.");
        }
    
        public function adminWorks(AcceptanceTester $I): void
        {
            $I->amOnSubdomain("admin");
            $I->amOnPage("/admin");
            $I->see("Kennwort anfordern");
        }
    }
    

    测试结果:

    Codeception PHP Testing Framework v4.1.21
    Powered by PHPUnit 9.5.8 by Sebastian Bergmann and contributors.
    
    Acceptance Tests (2) ---------------------------------------
    ProjectReachableCest: Frontpage works
    Signature: ProjectReachableCest:frontpageWorks
    Test: tests/acceptance/ProjectReachableCest.php:frontpageWorks
    Scenario --
     I am on page "/"
     I see "Customer doesn't exist."
     PASSED 
    
    ProjectReachableCest: Admin works
    Signature: ProjectReachableCest:adminWorks
    Test: tests/acceptance/ProjectReachableCest.php:adminWorks
    Scenario --
     I am on subdomain "admin"
     I am on page "/admin"
     ERROR 
    
    ------------------------------------------------------------
    
    Unit Tests (0) ---------------------------------------------
    ------------------------------------------------------------
    
    
    Time: 00:00.138, Memory: 12.00 MB
    
    There was 1 error:
    
    ---------
    1) ProjectReachableCest: Admin works
     Test  tests/acceptance/ProjectReachableCest.php:adminWorks
                                                                                                                                                                                               
      [GuzzleHttp\Exception\ConnectException] cURL error 6: Could not resolve host: admin.localhost (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://admin.localhost/admin  
                                                                                                                                                                                               
    
    Scenario Steps:
    
     2. $I->amOnPage("/admin") at tests/acceptance/ProjectReachableCest.php:23
     1. $I->amOnSubdomain("admin") at tests/acceptance/ProjectReachableCest.php:22
    
    #1  /home/app/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:210
    #2  /home/app/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:158
    #3  /home/app/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:110
    #4  /home/app/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php:47
    #5  /home/app/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php:35
    #6  /home/app/vendor/guzzlehttp/guzzle/src/Middleware.php:37
    #7  /home/app/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php:55
    #8  /home/app/vendor/guzzlehttp/guzzle/src/Middleware.php:63
    #9  /home/app/vendor/guzzlehttp/guzzle/src/HandlerStack.php:75
    #10 /home/app/vendor/guzzlehttp/guzzle/src/Client.php:331
    

    因此,基本上测试都是使用我的配置进行的,但我尝试了各种想法,以使第二个测试能够正常工作,但没有成功。

    http://localhost:19080/

    http://admin.localhost:19080/

    http://admin.localhost:19080/admin/

    http://customer1.localhost:19080/

    http://customer1.localhost:19080/admin

    此外,我很感兴趣,如果有更好的方法,然后在代码中设置这个?我看到可以在codeception中配置多个环境,但这并不是我真正想要的,它是一个应用程序。有人知道如何最好地配置它吗?

    0 回复  |  直到 4 年前