我拥有长期的编程经验,并决定在我的下一个项目中我将使用单元测试。我正在使用 php 与 CodeIgniter 和 oracle 作为 rdbms 创建一个应用程序。 我的所有模型基本上只有与数据库一起使用的方法:CRUD 方法,没什么花哨的。好吧,问题是我应该如何测试这些?它们值得测试吗?因为当查询错误时我会得到一个 php 错误,基本上我所有的测试都会通过,因为我的查询是正确的。 测试模型时我应该关注什么以及我应该期待什么?
例如: 简单方法:
public function register($username, $password, $email)
{
$hash = $this->_generate_hash();
return $this->add(array(
'username' => $username,
'password' => hash('sha256', $this->config->item('salt') . $password . $hash),
'email' => $email,
'hash' => $hash
));
如果查询没问题,这个插入将始终有效,如果我将测试参数添加到函数中,它将始终通过,但测试通过是因为 SQL 没问题,或者我应该如何测试它? }`
最佳答案
在测试模型时,我尝试考虑两件事:代码覆盖率和备用参数。
代码覆盖率:尝试实现高水平的代码覆盖率非常重要。这使您能够准确地弄清楚在不同的执行情况下会发生什么以及如何处理它们。很多时候,我发现一些难以测试的领域,经过一些审查后,我意识到它的编写方式并不是最佳的。对我的代码进行快速重构通常最终会让一切看起来更干净、工作得更好并且更易于测试。
备用参数:您可能觉得您可以完全控制发送到 CRUD 函数的数据,但是它们将如何处理与您期望的情况不同的情况?你说当查询错误时我会得到一个 php 错误
但这是你真正想要发生的吗?使用异常处理捕获这些错误并按照您自己的方式处理它们,而不是突然立即停止脚本执行,不是更好吗? 或者更糟糕的是,某些东西很容易受到 SQL 注入(inject)的攻击,而您却因为从未创建过测试用例而不知道?
这些是我个人在对模型进行单元测试时喜欢考虑的一些事情。
关于php - 单元测试101如何正确测试模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9734644/