我开始与Kohana一起使用PHPUnit。我的应用程序有许多控制器,它只是从某种形式获取数据,验证和插入/更新/删除到/ - /从数据库。我该如何为此编写测试用例。
我知道如果我想测试一个函数,我会编写数据提供程序函数,只是将返回值与预期函数进行比较。但我的输入数据(来自表单的数据)正在$_POST
变量中传递。我该怎么测试呢?之后,我应该检查插入的数据是否真的在数据库中?请给出我对这类测试的一些指导或链接到一些示例/教程。感谢。
答案 0 :(得分:16)
首先,如果您正在测试从接收POSTed数据到检查数据库中的值的所有方式,那么这不再是单元测试:您没有单独测试一个组件,但是您正在测试将这些组件整合在一起。
这使得测试更加困难:
请注意,我没有说那种“集成”测试没用,顺便说一下; - )
仍然,伪造$_POST
数组很简单:它不是只读的,你可以存储你想要的任何内容。
因此,在测试用例开始时,没有什么能阻止您注入所需的任何数据。
答案 1 :(得分:2)
答案 2 :(得分:0)
我同意Pascal的说法$ _POST数组不是只读数组,您可以根据需要对其进行操作。 此外,它取决于您的框架,Zendframework提供了操纵变量的强大灵活性 如链接中的示例
但是在这里你放弃了在构建函数中使用PHPUnit的优点,如(断言,数据提供者等) 但在我们的大多数情况下,我们使用全局数组$ _POST,$ _GET或$ _REQUEST,当我们看到PHPUnit示例时,我们谷歌“如何在PHPUnit中设置POST变量” 因为PHPUnit没有说明MVC测试用例(尽管有点勺子喂食) 我们需要获取框架的实例,然后我们可以使用我们的框架和PHPUnit 你的测试方式也会与其他方式不同
答案 3 :(得分:0)
你需要做的就是像这样设置post var。
$这 - > reques - >使用setMethod( 'POST') - > setPost(阵列( 'param1'=> 'VALUE1', 'param2'=> “值” ));
我希望这对你有用
保持微笑Kdecom