4

我正在测试我的网站的身份验证功能。Zend_Auth 用作授权引擎。但是身份验证状态在测试之间仍然存在,我需要在每次拆解中写“注销”。

现在一切都好。但问题随之而来。至于我知道 Zend_Auth 使用 Zend_Session 来存储身份验证数据。因此,会话对于所有测试都是通用的。我担心将来它会引起问题。

你能告诉我为每个测试单独创建会话的最佳做法是什么?

现在我可以想象只能在 setUp 中手动启动会话并在 tearDown 中停止。但是我有很多测试,实现它可能需要很多时间。

4

1 回答 1

1

PHPUnit 允许您为整个测试套件定义一个共享的夹具(一个通用设置)。然而,这个解决方案只是掩盖了测试设计中的一个缺陷,因为它没有解决它们对公共全局状态的依赖。更好的解决方案是使用测试替身,创建某些类的自定义存根来控制系统选定部分的行为。

在这种情况下,您可以尝试创建 Zend_Auth 的存根,以便它跳过 Zend_Session 的使用并为每个单元测试返回所需的权限。

于 2010-05-18T09:45:15.897 回答