我们终於要开始实作我们的单元测试了,
首先我们先建立一个自己的测试案例
php artisan make:test MyFirstUnitTest
我们发现在 /tests/Feature
资料夹多了一个 MyFirstUnitTest.php
档案,
内容如下:
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
class MyFirstUnitTest extends TestCase
{
/**
* A basic feature test example.
*
* @return void
*/
public function test_example()
{
$response = $this->get('/');
$response->assertStatus(200);
}
}
这个测试的内容是我们去向首页请求,
期待能够回传200的Http状态,
当然如果我们的网站没有问题,
应该是要能够回传200没有错,
那我们就来做一下验证
最後跑出来的结果也跟我们预期的一样,
是绿灯(代表通过),
如果我们把原来的程序改成这样
$response = $this->get('/');
$response->assertStatus(404);
可以预期地,
一定是会回传错误,
我们再来执行看看:
真的就变成红灯了,
错误讯息说
Expected status code 404 but received 200.
我们原本预期得到的状态是404,
但是却回传了200,
然後还告诉我们错误是在哪一行,
就是在MyFirstUnitTest.php的第20行。
这样子我们就可以透过PHPUnit来验证我们写的程序有没有问题。
所以我们现在开始来撰写自己的测试程序,
现在我们想要新增一个网页 /getLeapYear,
我们会传给他一个值,
然後得到一个回传值,
目前这个网页是不存在的,
所以应该会得到404的回传,
我们在我的们测试类别新增一个function,
public function test_leapyear_return_200()
{
$response = $this->get('/getLeapYear');
$response->assertStatus(200);
}
原本的那个范例改回来200
public function test_example()
{
$response = $this->get('/');
$response->assertStatus(200);
}
然後执行
php vendor/phpunit/phpunit/phpunit tests/Feature/MyFirstUnitTest.php
我们来看看框框的地方
到了这里,
我们终於成功地做了一个失败的单元测试,
(其实严格说来是成功,因为我们原本预期它就是会失败)
然後我们在web.php新增
Route::get('/getLeapYear', function() {
return true;
});
然後执行
php vendor/phpunit/phpunit/phpunit tests/Feature/MyFirstUnitTest.php
我们的第一个测试已经成功了!
<<: [Day7]C# 鸡础观念- 你有选择障碍吗? 交给 if陈述式 解决吧!
>>: 电子书阅读器上的浏览器 [Day08] 调整网页字型
前言 人工智慧在音乐领域上个各种应用,实际上已经发展了许久。 这里面包括了AI作曲、AI伴奏、AI读...
折腾了三天,我们终於要开始正式学习Django了!各位想必都非常兴奋吧! 那现在我们就来进行一个专案...
前言 Hi,铁人赛第二天,跟大家聊聊沟通,预计会陆续写几篇相关的主题,今天来分享平时的观察。 在敏捷...
订阅patreon即可看到更多文章 https://www.patreon.com/wade3c ...
今天来做储存帐密和自动登入的功能。 提醒:今天的内容缺少了加密储存密码,是极度危险的功能,这部份预计...