我正在使用 SimpleTest 对一些 PHP 代码进行单元测试,但遇到了麻烦。在我对数据库类的测试中,我希望能够为 PHP 设置期望mysql
功能。在我对包装类的测试中mail
我想模拟 PHP 的函数mail
功能。这些只是一些例子。
重点是:我不想(总是)测试我的 Mail 类是否发送电子邮件,我想测试它如何调用mail
功能。我希望能够控制这些函数返回的内容。我希望能够测试我的数据库类,而不需要数据库、固定装置等等。
我在测试 Ruby 代码方面有一些经验,Test::Unit 和 RSpec 使单独测试代码变得非常容易。我是测试 PHP 的新手,为了让我的测试通过,我感觉我正在测试比我应该需要的更多的东西。
SimpleTest 或 PhpUnit 或其他测试框架是否有办法使这成为可能或更容易?
不是以自动化的方式。您可以做的就是以一种将外部依赖项包装在从外部传入的对象中的方式编写代码。在生产环境中,您只需连接真正的适配器,但在测试过程中,您可以将其连接到存根或模拟。
如果你真的坚持的话,你可以使用运行套件扩展 http://www.php.net/manual/en/book.runkit.php它改变了 php 的编程模型,以便您可以在运行时重新定义类和函数。然而,这是一个外部的非标准扩展,所以请记住这一点。正如我上面所描述的,事实上的标准是一种手动方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)