Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何对“进行单元测试”;“存在”;验证规则?_Php_Unit Testing_Laravel - Fatal编程技术网

Php 如何对“进行单元测试”;“存在”;验证规则?

Php 如何对“进行单元测试”;“存在”;验证规则?,php,unit-testing,laravel,Php,Unit Testing,Laravel,我刚刚开始单元测试(我正在阅读Jeffrey Way解码的Laravel测试)。我不确定如何单独测试,因为它查询数据库。我想也许我需要以某种方式模拟数据库查询?如果是这样,我不知道该怎么做 明确地说,我想测试业务规则是否得到执行,而不是测试验证器是否正常工作。此外,我正在与Ardent一起在模型中进行验证,因此正在测试的是模型 例如,“必需”规则很容易测试。您使用有效数据填充每个字段,但您正在测试的字段除外,该字段保留为空。然后断言验证失败。(本书中有这样的例子)但测试“存在”或“独特”需要触及

我刚刚开始单元测试(我正在阅读Jeffrey Way解码的Laravel测试)。我不确定如何单独测试,因为它查询数据库。我想也许我需要以某种方式模拟数据库查询?如果是这样,我不知道该怎么做

明确地说,我想测试业务规则是否得到执行,而不是测试验证器是否正常工作。此外,我正在与Ardent一起在模型中进行验证,因此正在测试的是模型

例如,“必需”规则很容易测试。您使用有效数据填充每个字段,但您正在测试的字段除外,该字段保留为空。然后断言验证失败。(本书中有这样的例子)但测试“存在”或“独特”需要触及数据库。

简短回答: 不要

您试图创建的测试已经由Laravel的核心测试套件进行了测试

详细回答: 如果您想测试您的特定规则是否适用于您的数据集,那么您需要进行与您的数据交互的单元测试

Laravel附带的基本
TestCase
可以充分引导应用程序,这样您就可以做到这一点

也许不是用你真正的数据库

否则您可以放心地假设and将正常工作-无需重新测试。已经有测试来确保“存在”能够正常工作。剩下的唯一因素是您的数据是否支持测试

最后: 在测试时,请注意单元测试有多有用。您不一定需要100%的代码覆盖率。您尤其不需要测试框架覆盖率已经测试过的内容。如果您想了解什么是好的单元测试(以及单元测试与集成测试之间的区别),请查看

希望这有帮助

简短答复: 不要

您试图创建的测试已经由Laravel的核心测试套件进行了测试

详细回答: 如果您想测试您的特定规则是否适用于您的数据集,那么您需要进行与您的数据交互的单元测试

Laravel附带的基本
TestCase
可以充分引导应用程序,这样您就可以做到这一点

也许不是用你真正的数据库

否则您可以放心地假设and将正常工作-无需重新测试。已经有测试来确保“存在”能够正常工作。剩下的唯一因素是您的数据是否支持测试

最后: 在测试时,请注意单元测试有多有用。您不一定需要100%的代码覆盖率。您尤其不需要测试框架覆盖率已经测试过的内容。如果您想了解什么是好的单元测试(以及单元测试与集成测试之间的区别),请查看


希望这有帮助

这个问题与堆栈溢出无关;试试@FreshPrinceOfSO为什么?它不处理特定的编程问题。请参阅常见问题解答。我不明白您为什么不能更具体一些。为什么一个关于为特定的验证库实现单元测试的问题是离题的?我不介意程序员@FreshPrinceOfSO的问题,但是因为它关注的是Laravel的验证库,它比我们更适合堆栈溢出(这里是ProgSE mod);试试@FreshPrinceOfSO为什么?它不处理特定的编程问题。请参阅常见问题解答。我不明白您为什么不能更具体一些。为什么关于为一个特定的验证库实现单元测试的问题是离题的?我不介意程序员@FreshPrinceOfSO的问题,但是因为它关注的是Laravel的验证库,它比我们更适合堆栈溢出(这里是ProgSE mod)。我的目的更多的是测试业务规则是否得到执行,而不是测试验证器是否正常工作。如果不清楚的话,很抱歉。我的目的更多的是测试业务规则是否被强制执行,而不是测试验证器是否正常工作。对不起,如果不清楚的话。