Skip to content

tearDownHttpMock fails when test runs in isolation #51

@fcamp

Description

@fcamp

I have got a simple test for a gateway. Everything goes fine while the test is not ran in a separateProcess

    public function testSingle() {
        $this->http->mock
            ->when()
            ->then()
            ->callback(
                function (\Symfony\Component\HttpFoundation\Response $response) {
                    $response->setContent(file_get_contents(__DIR__ . '/../../xml/single.xml'))->setStatusCode(
                        200
                    );
                }
            )
            ->end();

        $this->http->setUp();
        //initialize gateway
        $response = $gateway->byName('my-name')->query();
        $rows = $response->getRows();
        self::assertCount(1, $rows);
    }

But If I add the runInSeparateProcess annotation, then tearDownHttpMock fails

   /**     
    *
    * @runInSeparateProcess
    * @preserveGlobalState disabled
    */
    public function testSingle() {
        //my code
    }

$server->getIncrementalErrorOutput() returns [Wed Apr 3 16:52:26 2019] Failed to listen on 127.0.0.1:33371 (reason: Address already in use)

As workaround I override the method into my test class

    protected function tearDownHttpMock()
    {
        if (!$this->http) {
            return;
        }

        //just skipping to make test work
        if($this->isInIsolation()){
            return;
        }

        $http = $this->http;
        $this->http = null;
        $http->each(
            function (HttpMockFacade $facade) {
                $this->assertSame(
                    '',
                    (string) $facade->server->getIncrementalErrorOutput(),
                    'HTTP mock server standard error output should be empty'
                );
            }
        );
    }

But I guess if there is another (better/proper) way to do this

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions