无法通过$ _GET进行单元测试

时间:2019-02-05 14:46:20

标签: php laravel phpunit

我无法通过$ _GET ['month']和$ _GET ['day']进行单元测试

$url = "https://api.abalin.net/get/namedays?day=5&month=2";
$response = $this
    ->json('GET', $url);

//也尝试过

$var = ['month' => '2', 'day' => '5'];
$url = "https://api.abalin.net/get/namedays?day=5&month=2";

$response = $this
    ->json('GET', $url, $var);

执行后,两者都将在这种情况下失败

if (!isset($_GET['month']) || !isset($_GET['day'])){
//
}

1 个答案:

答案 0 :(得分:0)

如果您使用的是laravel,则$ _GET不是理想的测试方法。另外,laravel的测试设置非常好,可以避免自己做事。

documentation包含您需要的示例。

此外,单元测试是关于测试预期的输出,或者在某些情况下可能正在测试直到输出之前的数据转换过程。

对于您来说,如果您的测试本身通过GET方法中的url参数,那么测试它是否包含紧随其后的那些参数并没有真正的帮助。相反,您应该针对期望的响应声明测试。

这是一个非常简单的示例:

<?php 

$response = $this->json('GET',  '/url',['month' => '2', 'day' => '5']);

// Check if response is successful with status code 200
$response->assertStatus(200);

// Check if response contains an expected data, for example `status` as `success`
$response->assertJson(['status' => 'success'];

如果您要进行拉播,this将帮助您入门。