簡體   English   中英

無法斷言兩個對象相等 PHP Codeception

[英]Failed asserting that two objects are equal PHP Codeception

我寫了一個小測試來檢查function返回的數據是否符合我的預期。

/**
 * @dataProvider successDataProvider
 */
public function testSuccessProvide(array $responses, ?MyResponse $myResponse): void
{
    $dataProvider = new MyDataProvider($this->tester->mockGuzzleClient($responses));
    $dataProviderResponse = $dataProvider->provide(Stub::makeEmpty(CheckRequest::class, [
        'nameUser' => new Name('test', 'test', 'test')
    ]));
    $this->assertEqualsCanonicalizing($myResponse, $dataProviderResponse);
}

我的 function 包含我按預期准備的對象,function 返回的正確數據

public function successDataProvider(): array
    {
        return [
            [
                'httpResponses' => [
                    $this->createSuccessResponse('simple')
                ],
                'dataProviderResponse' => new MyResponse(
                    [
                        (object)[
                            "type" => "Ответчик",
                            "subType" => "РешенияПерв",
                            "year" => 2017,
                            "description" => "Оставить без изменения решение, а апелляционную жалобу - без удовлетворения (п.1 ст.269 АПК)",
                            "sum" => 10576596.8,
                            "count" => 1
                        ],
                        (object)[
                            "type" => "Ответчик",
                            "subType" => "РешенияПерв",
                            "year" => 2017,
                            "description" => "Оставить решение (определение) суда первой инстанции и постановление суда апелляционной инстанции без изменения, а кассационную жалобу - без удовлетворения",
                            "sum" => 3519672.72,
                            "count" => 1
                        ],
                        (object)[
                            "type" => "Ответчик",
                            "subType" => "РешенияАпп",
                            "year" => 2017,
                            "description" => "Оставить без изменения решение, а апелляционную жалобу - без удовлетворения (п.1 ст.269 АПК)",
                            "sum" => 10576596.8,
                            "count" => 1
                        ],
                        (object)[
                            "type" => "Ответчик",
                            "subType" => "РешенияАпп",
                            "year" => 2017,
                            "description" => "Оставить решение (определение) суда первой инстанции и постановление суда апелляционной инстанции без изменения, а кассационную жалобу - без удовлетворения",
                            "sum" => 3519672.72,
                            "count" => 1
                        ],
                        (object)[
                            "type" => "Ответчик",
                            "subType" => "РешенияКасс",
                            "year" => 2017,
                            "description" => "Оставить решение (определение) суда первой инстанции и постановление суда апелляционной инстанции без изменения, а кассационную жалобу - без удовлетворения",
                            "sum" => 3519672.72,
                            "count" => 1
                        ],
                        (object)[
                            "type" => "Ответчик",
                            "subType" => "РешенияПерв",
                            "year" => 2021,
                            "description" => "Нет решения",
                            "sum" => 44014383.56,
                            "count" => 1
                        ]
                    ]
                ),
            ]
        ];
    }

我在左邊附上了一張圖片:我的數據,右邊的數據對測試是正確的。 As you can see my data (stdClass Object & 000000001b2e5dd1000000001e790f83) does not match the result (namespace my function Object & 000000001b2e5d1d000000001e790f83)

在此處輸入圖像描述

我收到如下錯誤:“斷言兩個對象相等時失敗。” 問題是,我怎樣才能比較兩個對象或者,我怎樣才能擺脫測試中的命名空間依賴,以便我能夠成功通過它? 提前感謝您的回答!

您不應期望(對象)返回,而是返回數據,例如 ClassResponseData,並期望僅獲得 ClassResponseData object。 object 是 class 的特定實例。 例如,您的特定機器或數據響應。 您期待一些特定的東西,但在測試中您剛剛發送了 object 並期待 Class object。

public function successDataProvider(): array
    {
        return [
            [
                'httpResponses' => [
                    $this->createSuccessResponse('simple')
                ],
                'dataProviderResponse' => new ClassResponseData(
                    [
                        new ClassResponseData(
                            "Ответчик",
                            "РешенияПерв",
                            2017,
                            "Оставить без изменения решение, а апелляционную жалобу - без удовлетворения (п.1 ст.269 АПК)",
                            10576596.8,
                            1
                        ),
                        new ClassResponseData(...),
                        
                    ]
                ),
            ],
            ...
        ];
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM