功能测试断言的深度

时间:2015-07-06 17:54:05

标签: php unit-testing symfony testing functional-testing

我正在开发基于Symfony2和PHPUnit的项目。据我所知,功能测试代表了系统在用户视角中应该做的事情。但是,我对这种方法有一些疑问。

假设我正在测试用户注册表单。因此,提交表单后我应该做的第一件事就是声明响应成功,发送了一封电子邮件,并且可能在成功页面上进行断言。在内部,系统应存储注册日期,更改用户状态等。

问题是:检查这个低级别的代码,如注册日期和状态应该由功能测试覆盖?如果不是,那么进行此类测试的最佳位置在哪里?

1 个答案:

答案 0 :(得分:1)

如果您不被强制将其包含在集成测试中,那么我建议将其作为单元测试。通常,您的测试结构应该是金字塔:http://martinfowler.com/bliki/TestPyramid.html

我会把这个测试分成几个:

  • 单元测试以检查信息是否按预期方式正确反序列化并创建了预期的数据结构
  • 单元测试以检查该数据结构是否已传递给特定服务(例如,如果存储库收到'请求预期时间和其他参与者)
  • 集成测试以检查存储库是否正确处理' save'请求。这通常是一般的'测试,与此特定用户故事没有密切关系。
  • 一般(与此特定用户故事无关)集成测试,以检查经过单元测试的基础架构是否正确连接(包括视图/ UI)
通过这种方式,您将获得许多单元测试,并且只进行一些集成/ ui测试。这很好。这是因为维护功能测试需要付出很多努力,并且与单元测试相比非常慢