实上很少有人会去测试一个PHP的内置函数。但是用来测试你自己的函数是有价值的。观察它们是否可以返回正确的结果,需要担心的主要有:
- 他们的表现完美吗?
- 但是如果用户想在其他环境下运行, 它还能正常工作吗?
- 或你将会写更多的代码, 或修改现有的代码, 造成你自己的函数不能正常地工作。
有时, 出错是是由于编程问题引起的, 所以我们可以用编程来捕捉和修改错误。你能在用不同参数进行测试的过程中获得乐趣。
让我们回到我们那个运行一个数据库查询删除指定ID值的记录的那个例子。如果下面情况出现它会做什么:
- ID是NULL,或者没有给出值?(特别地重要地,你可能偶然地删除表中所有的数据。)
- ID不是一个整数? ("x", 举例来说?)
- 身份证是一个整数, 但是超出范围 (你在你的表中有 1000个记录,但是ID是1001?)
- ID是一个负整数?
诸如此类,想出不同测试条件是有趣的。
在单元测试中把这些参数放进函数, 并看看结果。 当然,结果可能和你预料的一样。第一个情形和第二个情形会报错。 你应该修改以阻止它发生。因此执行后,单元测试不能通过。
我们定义我们要从每个测试中得到的结果,如果结果和我们设定的一样,测试就通过。但是如果在测试过程中,程序抛出一个异常,后面的代码不再执行,我们如何能够让单元测试完成呢?这就要求我们必须先保证程序没有语法上的错误,让函数能够执行所有的代码。毕竟,单元测试不是用来对付语法错误的,这是PHP环境的工作。
上述假设的第三个情况是ID超出范围,这不是一个代码错误,数据库能安全地处理这种情况。但是,你可以在把查询发给数据库之前做一定的检测工作。或者你也可以让它运行一下,因为有可能会使数据库返回一个出错信息,因此你需要用自己的错误信息来代替系统给出的信息,比如“对不起,现在系统正忙,无法提供服务 ”。