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

使用Codeception进行单元测试:解析错误

柴坚诚
2023-03-14

我正在尝试为我的简单网站编写一些单元测试(用于学习)。

项目结构:

在index.php中,我定义了一个名称空间Main

函数位于命名空间Main\Logic中,类位于命名空间Main\Logic\Class中。

测试/单元/BuildGalleryTest.php代码:

<?php

namespace Tests\Unit;

use Codeception\Test\Unit as TestCase;

use function Main\Logic\galleryBuilder;

require "/Users/l.marder/Homeworks/php-study/lesson4/logic/galleryBuilder.php";

class BuildGalleryTest extends TestCase
{

    /**
     * @dataProvider buildGalleryDataProvider
     * @param string $imgPack
     * @param string $expectedResponse
     */
    public function testBuildGallery(string $imgPack, string $expectedResponse): void
    {
        $actualResponse = galleryBuilder("tests/unit/test_data/img/$imgPack");
        self::assertEquals($expectedResponse, $actualResponse);
    }

    public function buildGalleryDataProvider(): array
    {
        return
            [
                "Data pack 1: one pic" => [
                    "1",
                    $this->buildTestGallery("1")
                ],
                "Data pack 2: two pics with folder and text.txt file" => [
                    "2",
                    $this->buildTestGallery("2")
                ],
                "Data pack 3: no images" => [
                    "3",
                    $this->buildTestGallery("3")
                ]
            ];
    }

    private function buildTestGallery(string $dataPack): string
    {
        if ($dataPack === "1") {
            return "
            <a href=\"picture.php?img=tests/unit/test_data/img/1/1.img\" target=\"_blank\">
                <div class=\"small-pic\">
                    <img class=\"img-small-kit\" src= alt=\"Kitty 2\">
                </div>
            </a>";
        }
        if ($dataPack === "2") {
            return "
            <a href=\"picture.php?img=tests/unit/test_data/img/2/1.img\" target=\"_blank\">
                <div class=\"small-pic\">
                    <img class=\"img-small-kit\" src=tests/unit/test_data/img/2/1.img alt=\"Kitty 2\">
                </div>
            </a>
            <a href=\"picture.php?img=tests/unit/test_data/img/2/2.img\" target=\"_blank\">
                <div class=\"small-pic\">
                    <img class=\"img-small-kit\" src=tests/unit/test_data/img/2/2.img alt=\"Kitty 3\">
                </div>
            </a>";
        }
        if ($dataPack === "3") {
            return "<img class=\"img-big-pic\" src=tests/unit/test_data/3/404.gif alt=\"Kitty Pic\">";
        }

        return "";
    }
}

当运行php供应商/bin/codecep运行我得到以下错误:

In Parser.php line 128:
                                                                                                                     
  Couldn't parse test '/Users/l.marder/Homeworks/php-study/lesson4/tests/unit/logic/BuildGalleryTest.php' on line 9  
  syntax error, unexpected 'int' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST)      

我做错了什么?如何解决这个问题?

共有1个答案

南门祯
2023-03-14

我使用sphp将php版本更改为7.4,现在一切正常!

 类似资料:
  • 我是测试新手,我正在使用codeception和phpunit来做一些TDD。 然而,我的方法有很多代码。我是否使用了最佳实践?有没有一种方法可以提高我的代码的就绪性,它能更干净吗?

  • 问题内容: 我正在使用一个Android应用程序,该应用程序是从Web服务下载JSON数据的。解析数据的类如下所示: 当我从应用程序内部调用时,它构建良好并且可以正常工作,但是当我尝试在单元测试中测试此方法时,出现以下异常: 默认情况下,Android框架随附的软件包的类似乎在Java中不可用。 有没有一种方法可以解决此问题,以便可以对解析JSON的类进行单元测试? 问题答案: 您需要做的就是将以

  • 尝试设置远程代码欺骗单元测试在PhpStorm中的Yii2项目。 使用SSH,我可以登录到服务器,转到我的Yii2项目的根目录并运行:

  • 问题内容: 我选择的数据库是MongoDB。我正在编写一个数据层API,以从客户端应用程序中抽象实现细节- 也就是说,我实质上是在提供一个公共接口(一个充当IDL的对象)。 我正在以TDD方式测试自己的逻辑。在每个单元测试之前,调用一个方法来创建数据库单例,此后,当测试完成时,将调用一个方法来删除数据库。这有助于促进单元测试之间的独立性。 几乎所有单元测试(即 执行上下文查询 )都需要先进行某种插

  • 我想测试以下骆驼路线。我在网上找到的所有例子都有以文件开头的路由,在我的例子中,我有一个Springbean方法,每隔几分钟就会被调用一次,最后消息被转换并移动到jms以及审计目录。 我对这条路线的写测试毫无头绪。目前我在测试用例中所拥有的是

  • 我正在构建一个android应用程序,它使用Firebase作为后端,并采用模型、视图和演示者架构。然而,Firebase是一种云服务的事实使我的android应用程序中的自动测试变得复杂。到目前为止,我已经构建了大部分身份验证系统,但无法看到如何在我的应用程序中实现Firebase代码的单元测试。在端到端测试方面,我也陷入了困境。 由于测试是任何android应用程序的基础,没有it应用程序开发