当前位置: 首页 > 知识库问答 >
问题:

Laravel-phpunit数组断言

郝池暝
2023-03-14

我试图写一个phpUnit测试,这样我就可以测试我得到了正确的断言,这个测试我目前正在通过,并按预期工作。

/**
@test
*/
  $filmInfo = $this->postRequest();

        $this->assertFilm($this->requestData, $filmInfo['id']);

        $film = Film::findOrFail($filmInfo['id']);

        $this->assertEquals('LOTR', $filmInfo['name']);
        $this->assertEquals('Film about a ring', $filmInfo['description']);
        $this->assertEquals('Fantasy', $filmInfo['genre']['main']);
        $this->assertEquals('Adventure', $filmInfo['genre']['sub']);
    }

这是它所指的请求数据数组:

    private function requestData(): array
    {
        return [
            'name' => 'LOTR',
            'description' => 'Film about a ring',
            'main' => 'Fantasy',
            'sub' => 'Adventure',
        ];
    }

这个测试工作正常,它通过了,但我想在这样一个断言中测试它:

  $this->assertEquals([
            'name' => 'LOTR',
            'description' => 'Film about a ring',
            'genre' => [
                'main' => 'Fantasy',
                'sub' => 'Adventure'
            ]
            ,
        ], $filmInfo);

但是我一直得到一个错误,我断言的两个数组不匹配,你们知道是什么导致了这个错误吗?

共有1个答案

龙景澄
2023-03-14

正如PHPUnit所说,您的数组不匹配。您的数组应与$filmInfo数组中的所有值匹配。

从您的代码中,我们可以猜测您没有比较id。也许您可以尝试以下代码:

$this->assertEquals(array_merge($filmInfo, [
    'name' => 'LOTR',
    'description' => 'Film about a ring',
    'genre' => [
        'main' => 'Fantasy',
        'sub' => 'Adventure'
    ],
]), $filmInfo);

 类似资料:
  • 每当我尝试使用assertResponseOk()时,都会出现此错误 致命错误:在/home/faasdril/public\u html/test/Tests/Unit/LessonsTest中调用未定义的方法Tests\Unit\LessonsTest::assertResponseOk()。php第19行 我可以使用其他断言方法,并且我已经正确地扩展了TestCase类 我用的是Larave

  • 我是新来的Laravel使用本地开发环境与家园尝试运行简单的测试 路由/网络。php: 运行phpunit返回404错误 vagrant@homestead:~/code/laravel$phpunit phpunit 6.4。3由塞巴斯蒂安·伯格曼和撰稿人撰写。 .F.3/3(100%) 时间:1.07秒,内存:10.00MB 有1次失败: 1) Tests\Feature\UserTest::

  • 我正在开发一个具有多个数据库访问的应用程序,我想用它进行PHPUnit测试。我目前的方法是在中拥有多个连接(mysql,mysql2,mysql3),这样我就可以在env文件中对所有这些连接进行不同的访问。因此,模型定义了变量。在我的第一个功能测试中,我想访问一个页面,只看到我在工厂提供的数据,所以只是为了让事情开始。在我的文件中,我已经将指定为,并且对于每个MySql设置都具有。 稍后编辑 所以

  • 问题内容: 有谁知道是否存在可以测试被测代码中是否抛出异常的或类似东西? 问题答案:

  • 我读过laravel 5.5留档为unittest。据说我们只需要执行phpUnit{如https://laravel.com/docs/5.5/testing}然后我尝试了这个:如何使用phpUnit运行单个测试方法? 但据说“无法打开文件”。然后我尝试了phpunitexampletest,但仍然无法打开该文件。那么这里怎么了。。。?提前谢谢

  • 本文向大家介绍laravel单元测试之phpUnit中old()函数报错解决,包括了laravel单元测试之phpUnit中old()函数报错解决的使用技巧和注意事项,需要的朋友参考一下 前言 最近在做laravel单元测试.遇到了一个问题: 当添加的view里面使用old()函数时就会报错,正常url访问没问题,但是在phpUnit中就报错 错误原因: exception 'RuntimeExc

  • PHPUnit是一个轻量级的PHP测试框架。它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计) 单元测试是几个现代敏捷开发方法的基础,使得PHPUnit成为许多大型PHP项目的关键工具。这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试,最合它还可以和Selenium整合来完成大型的自动化集成测试。

  • table.getn(t) 等价于 #t 但计算的是数组元素,不包括 hash 键值。而且数组是以第一个 nil 元素来判断数组结束。# 只计算 array 的元素个数,它实际上调用了对象的 metatable 的 __len 函数。对于有 __len 方法的函数返回函数返回值,不然就返回数组成员数目。 Lua 中,数组的实现方式其实类似于 C++ 中的 map,对于数组中所有的值,都是以键值对的