【问题标题】:Symfony2 RESTful application - testsSymfony2 RESTful 应用程序 - 测试
【发布时间】:2015-12-16 09:41:48
【问题描述】:

在 Symfony2 RESTful 应用程序或任何其他应用程序中进行测试哪种方式更好。

示例: 我想测试PostController,其中包含操作:getPostsAction()getPostAction()putPostAction()postPostAction()deletePostAction()

所以我创建了class PostControllerTest

问题是:

a) 我应该为每个操作创建单独的测试吗? Ex - 测试更新:

  • 第一个从夹具加载柱子
  • 获取此已添加帖子之一的 ID
  • 通过PostController@putPostAction更新此帖子
  • 与实体管理器检查更新结果

b) 或者在一个测试中测试几个动作(每个通过控制器)?例如:

  • 第一个测试创建
  • 下一个列表(期待添加的帖子)
  • 更新中
  • 列表(期待更新的帖子)
  • 正在删除
  • 列表(预期 0 行)。

我认为第一个选项是可以的,因为我在一个测试中只测试一个控制器动作。我完全知道我想测试什么。 但在第二种情况下,我可以更快地进行测试,并且不需要使用固定装置和实体管理器。

哪种方式更好,为什么?

【问题讨论】:

    标签: php rest unit-testing symfony


    【解决方案1】:

    我不能确定什么是最适合您的解决方案,但我认为一个好主意是按照您所说的那样让它更实用。 你可以让你的测试遵循一个流程,比如:

    • 创建用户
    • 更新用户
    • 删除用户

    在不留下垃圾数据的情况下完成一个完整的循环。

    我有一个开源项目,我就是这样做的,而且我还使用一些特性来帮助我创建对象和验证来自我的 Rest 调用的响应。 你可以在这里看到一个真正的测试:https://github.com/renatomefidf/sammui/blob/master/src/Renatomefi/TranslateBundle/Tests/Controller/ManageControllerTest.php

    通过使用 phpunit 中的 @depends 注释,您可以确定流程并确保您有一个逻辑路径供您的测试使用。

    希望对您有所帮助,如果您有更多问题,请告诉我!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多