单元测试 - 识别测试场景

时间:2016-06-20 06:55:11

标签: php unit-testing laravel-5 tdd

我是团结测试的新手,很难确定要测试的正确方案。

主要是我的网站有以下功能(使用Laravel 5):

查看页面

  1. 使用模型从数据库中检索值

  2. 通过控制器将该数据传递到HTML模板

  3. 在HTML模板中打印数据以显示

  4. //视图

    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   
    
    }
    

    编辑/创建页面

    1. 从视图文件中检索输入数据

    2. 验证

    3. 保存/更新数据库并打印成功消息。

      public function editStudent($ id){

      //grab input data
      
      //validate
      
      //save in DB
      

      }

    4. 以上情况看起来非常简单。只要我获得数据库条目 我得到了成功的输出。可以使用验证(客户端/服务器端)过滤无效输入。我们是否需要为上述功能编写单元测试?什么是测试场景?

      你能给我一些实际的例子来测试吗?

      本网站主要有80%的CRUD操作。除此之外我还有:

      1. 过滤日期的一些功能。例如:输入日期1,日期2 - 数据库结果将在这两个日期之内。

      2. 一些全球功能。例如:格式日期时间,货币。 ACL功能。

2 个答案:

答案 0 :(得分:1)

好的在我看来,你需要测试一个场景,如果从DB检索失败怎么办?在这种情况下,您需要捕获异常并显示正确的错误消息。然后,您需要测试检索何时按预期工作,因此两个方案是:

1st - 从数据库中检索时的测试失败 2nd - 从数据库中检索成功时测试,数据显示在视图中。您可以使用它来测试第二种情况:

$this->visit('/')
             ->see('Laravel');

在我看来,这两种情况应该足够了。希望这会有所帮助。

答案 1 :(得分:1)

根据我的意见你应该用视图对控制器功能进行单元测试 你可以为此模拟模型。原因是,这些函数可以检查正确的视图是否加载了给定的数据

但是对于每次编辑和保存,您必须编写集成测试以检查这些数据是否实际保存。如果你不使用与其他数据库相关的本机sql函数,你可以使用sqlite db进行集成测试

相关问题