【问题标题】:Unit Testing - Identifying test scenarios单元测试 - 识别测试场景
【发布时间】:2016-06-20 06:55:11
【问题描述】:

我是统一测试的新手,很难确定要测试的正确场景。

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

查看页面

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

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

  3. 在 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   

}

编辑/创建页面

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

  2. 验证

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

    公共函数editStudent($id){

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

    }

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

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

这个网站主要有 80% 的 CRUD 操作。除此之外,我有:

  1. 一些过滤日期的函数。例如:输入 date1、date2 - 数据库结果将在这两个日期内。

  2. 一些全局函数。例如:格式化日期时间、货币。 ACL 函数。

【问题讨论】:

    标签: php unit-testing laravel-5 tdd


    【解决方案1】:

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

    第一个 - 从数据库中检索失败时进行测试。
    2nd - 从数据库中检索成功时测试数据是否显示在视图中。您可以使用它来测试第二种情况:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-21
        • 1970-01-01
        • 2011-03-16
        • 2010-10-20
        • 2021-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多