Symfony2 RESTful应用程序 - 测试

时间:2015-12-16 09:41:48

标签: php rest unit-testing symfony

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

实施例: 我想测试sObserved = Replace(sObserved, "&", "&") sObserved = Replace(sObserved, ";", "&#59;") sObserved = Replace(sObserved, "&amp&#59;", "&") ,其中包含以下操作:PostControllergetPostsAction()getPostAction()putPostAction()postPostAction()

所以我创建了deletePostAction()

问题是:

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

  • 首次从夹具中加载帖子
  • 获取其中一个已添加帖子的ID
  • 通过class PostControllerTest
  • 更新此信息
  • 使用实体管理器检查更新结果

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

  • 首次测试创建
  • 下一个上市(期待增加的帖子)
  • 更新
  • 列出(期待更新的帖子)
  • 删除
  • 列出(期待0行)。

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

哪种方式更好,为什么?

1 个答案:

答案 0 :(得分:1)

我无法确定什么是最适合您的解决方案,但我认为一个好主意就是让它更具功能性。 您可以使测试遵循流程,例如:

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

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

我有一个开源项目我完全喜欢这个,我也使用一些特性帮助我创建对象并验证来自我的Rest调用的响应。 您可以在此处查看真实的测试:https://github.com/renatomefidf/sammui/blob/master/src/Renatomefi/TranslateBundle/Tests/Controller/ManageControllerTest.php

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

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