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

使用Codeception,Symfony2功能测试服务如何添加断言?

文鸣
2023-03-14

小结:我想在测试中使用模块断言。

之前,我使用PHPUnit测试了Symfony2服务。这没关系,但我想使用Codeception Symfony2模块提供的一些功能以及更干净的测试风格。

我使用以下服务创建了一个新套件。suite.yml

class_name: ServiceGuy
  modules:
    enabled: [Symfony2, Doctrine2, Filesystem, ServiceHelper]

我运行了构建和生成: cest,并有一个ServiceCest.php测试文件

public function getServiceUrl(\ServiceGuy $I) {
    $this->myservice = $I->grabServiceFromContainer("myservice");
    $I->wantTo("get service URL");
    $I->seeTrue("http://example.com/services" 
                  ==  $this->ecservice->getServiceUrl());
}

此测试通过,因为我在serviceheloper.php文件中添加了断言函数。

class ServiceHelper extends \Codeception\Module    {
  function seeTrue($flag) {
    $this->assertTrue($flag);
  }
}

模块类有一组丰富的断言函数,我希望能够在测试中直接使用。但是我不认为模块对象对测试是可用的。必须向ServiceHelper添加一系列断言函数似乎是重复的。有没有更好的办法?

例如,在phpunit测试中,我可能有这些断言。

站点服务

美元这个-

我的问题是是否有办法在功能测试中拥有所有这些断言,或者我是否必须将许多特定于测试的断言移动到助手中。

单元模块似乎提供了许多这样的功能,但已被弃用。

我尝试把\PHPUnit_Framework_Assert::assertEquals(1,计数($站));在测试中-但这会抛出一个异常的失败,不是由测试工具处理。

谢谢安德鲁

附言:我会给这个“代码欺骗”贴上标签,但我还没有要点。也许其他人可以。

共有1个答案

林项明
2023-03-14

是的。我们不赞成它,因为有太多的误用。

在您的情况下,您应该使用经典的PHPUnit测试风格。代码欺骗有两个选项,生成:测试-获得一些代码欺骗帮助或生成:phpUnit获得普通的PHPUnit测试,没有魔法。

请阅读我的帖子。在这里我有一些技巧,比如在单元测试中使用容器。

http://codeception.com/02-12-2013/testing-symfony2.html

 类似资料:
  • 我在数据库中存储了一个字符串,希望从应用程序中的不同位置访问该字符串。我发现最好的解决方案是创建一个函数,从数据库中获取该字符串并将其注册为服务。 功能: service.yml 其他控制器中的输出: 不幸的是,我不断地 严重-未捕获的PHP异常Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException:“您请求

  • 我正在写一个简单的测试用例。我使用作曲家安装了代码欺骗。我的测试用例位于测试用例文件夹内的根文件夹中 当我尝试运行以下代码时 当我尝试在浏览器中运行代码时,我得到以下错误 在我的项目中有一个名为yiisoft\yii2-codecsion\TestCase.php的文件 我做错了什么?有人能帮忙吗。?

  • 问题内容: 这个问题始于我不理解为什么不能将变量传递给symfony2全局帮助器函数(服务)的原因,但是由于比我聪明的人,我意识到我的错误是关于试图从没有使用该类的类中使用security_context。没有注射吗… 这是最终结果,该代码有效。我发现没有更好的方法可以使此方法对社区有所帮助。 这是从symfony2的全局函数或帮助函数中从security_context获取用户和其他数据的方法。

  • 问题内容: 我的角度应用程序中有一个服务,看起来像这样: 我不仅要对return语句中公开的功能/属性进行单元测试,还要对return语句之外的功能进行单元测试。 我的测试当前设置如下: 但是,如何测试return语句未公开的compare,filter和createBrackets函数? 谢谢! 问题答案: 无法测试这些功能。它们的范围是构成BracketService工厂的函数,在其他任何地方

  • 问题内容: 我对Java单元测试非常陌生,听说Mockito框架对于测试非常有用。 我已经开发了一个REST Server(CRUD方法),现在我想对其进行测试,但是我不知道如何? 我什至不知道该测试程序应该如何开始。我的服务器应该在本地主机上运行,​​然后在该URL上进行调用(例如,本地主机:8888)? 这是我到目前为止尝试过的方法,但是我很确定这不是正确的方法。 这是方法的代码。 在此测试用

  • 问题内容: 我只想在不引导Angular的情况下测试服务。 我看了一些例子和教程,但是我什么也不会去。 我只有三个文件: myService.js:在这里定义AngularJS服务 test_myService.js:在这里定义服务的Jasmine测试。 specRunner.html:一个具有常规茉莉花配置的HTML文件,在其中导入了前两个其他文件以及茉莉花,Angularjs和angular-