gpt4 book ai didi

Laravel - 测试 - assertJsonMissingExact

转载 作者:行者123 更新时间:2023-12-05 06:55:20 24 4
gpt4 key购买 nike

不得不承认这是我第一次使用这种方法

在描述之前,这里是本例中的 Laravel 和 PHP 版本。拉维尔:8.15PHP:7.4.13

  • 我的路线:
Route::get('/', function () {
return ['a' => 1, 'b' => 2, 'c' => 3];
  • 当我的测试方法如下时,它失败了,这是我所期望的
    public function testDemo()
{
$response = $this->get('/')->assertJsonMissing(['a' => 1, 'b' => 3]);
}
  • 然后,我使用了 assertJsonMissingExact,我预计它会通过。
    public function testDemo()
{
$response = $this->get('/')->assertJsonMissingExact(['a' => 1, 'b' => 3]);
}
  • 但是,它没有通过。相反,这是消息
This test did not perform any assertions

Time: 00:00.178, Memory: 20.00 MB


OK, but incomplete, skipped, or risky tests!
Tests: 1, Assertions: 0, Risky: 1.
Process finished with exit code 0

它说测试没有执行任何断言。请问这正常吗?因为我期待一个 passed 结果。

任何人都可以帮助我,将不胜感激。

最佳答案

对你来说可能为时已晚,但对下一个想要了解这两种方法的人(比如我)来说可能不会。

查看两者的基本实现

Illuminate/Testing/AssertableJsonString::assertMissing()在简化代码中(省略数组排序)

public function assertMissing(array $data, $exact = false)
{
$actual = json_encode($actualData);

foreach ($data as $key => $value) {
if (Str::contains($actual, $unexpected){
PHPUnit::Fail()
}
}

return $this;
}

Illuminate/Testing/AssertableJsonString::assertMissingExact()

简化代码

public function assertMissing(array $data, $exact = false)
{
$actual = json_encode($actualData);

foreach ($data as $key => $value) {
if (! Str::contains($actual, $unexpected){
return $this;
}
}

PHPUnit::Fail()
}

因此,如果整个数组在实际数据中,则 assertJsonMissing 失败,而如果至少一个键 => 值对在实际数据中,则 assertJsonMissingExact 失败,在您的情况下 'a' => 1

关于Laravel - 测试 - assertJsonMissingExact,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65403049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com