我是团结测试的新手,很难确定要测试的正确方案。
主要是我的网站有以下功能(使用Laravel 5):
查看页面
使用模型从数据库中检索值
通过控制器将该数据传递到HTML模板
在HTML模板中打印数据以显示
//视图
public function getStudents(){
$students = Student::all(); // model: get all the students from Database
$data['students'] = $students;
return view('views/students', $data);// Pass data into the view
}
编辑/创建页面
从视图文件中检索输入数据
验证
保存/更新数据库并打印成功消息。
public function editStudent($ id){
//grab input data
//validate
//save in DB
}
以上情况看起来非常简单。只要我获得数据库条目 我得到了成功的输出。可以使用验证(客户端/服务器端)过滤无效输入。我们是否需要为上述功能编写单元测试?什么是测试场景?
你能给我一些实际的例子来测试吗?
本网站主要有80%的CRUD操作。除此之外我还有:
过滤日期的一些功能。例如:输入日期1,日期2 - 数据库结果将在这两个日期之内。
一些全球功能。例如:格式日期时间,货币。 ACL功能。
答案 0 :(得分:1)
好的在我看来,你需要测试一个场景,如果从DB检索失败怎么办?在这种情况下,您需要捕获异常并显示正确的错误消息。然后,您需要测试检索何时按预期工作,因此两个方案是:
1st - 从数据库中检索时的测试失败 2nd - 从数据库中检索成功时测试,数据显示在视图中。您可以使用它来测试第二种情况:
$this->visit('/')
->see('Laravel');
在我看来,这两种情况应该足够了。希望这会有所帮助。
答案 1 :(得分:1)
根据我的意见你应该用视图对控制器功能进行单元测试 你可以为此模拟模型。原因是,这些函数可以检查正确的视图是否加载了给定的数据
但是对于每次编辑和保存,您必须编写集成测试以检查这些数据是否实际保存。如果你不使用与其他数据库相关的本机sql函数,你可以使用sqlite db进行集成测试