PHP 单元测试 - $_POST 在保存到数据库时返回空值
PHP UNIT TEST - $_POST returning null values when saving to database
我对 php 和 php 单元测试用例很陌生。我正在尝试编写一个测试用例以在测试用例中使用 $_POST 将值保存到数据库中。当我执行测试用例时,POST 返回空值。请帮助如何在 php 单元测试中使用 $_POST 变量。
TEST CLASS-
public function setUp() {
$this->resetInstance();
$this->CI->load->model('save_data_model');
$this->obj = $this->CI->save_data_model;
}
public function test_SaveData()
{
$_SERVER['REQUEST_METHOD'] = 'POST';
$_POST = array('value1'=>'10','value2'=>'100');
$actual = $this->obj->SaveData('1');
$this->assertNotNull($actual);
}
}
MODEL -
public function SaveData($id)
{
$sql['value1'] = $_POST['js_data']['input_value1'];
$sql['value2'] = $_POST['js_data']['input_value1'];
$sql['id'] = $id;
if(!empty($id))
{
$this->db->where('id',$id);
if($this->db->update('table_name',$sql))
{
return 'Updated';
}
else
{
return 'Not Updated';
}
}
}
Severity: NoticeMessage: Undefined index: js_dataFilename in SaveData.php
Database error: A Database Error Occurred
NULL VALUE FOR value1
UPDATE `table_name` SET `value1` = NULL, `value2` = NULL
WHERE `id` = '1'
我看你是一个 phpunit/tests 新手。这是好事。
您正在设置 $_POST['value1'] 但您打算在您的模型中检索 $_POST['js_data']['input_value1']。
但是,除此之外,我可以给你一些建议:
1) 不要在你的模型中使用 $_POST
2) 为模型的属性声明 public 个变量(例如 public $value1; public $id;...)
3) 然后,在你的测试中你应该设置:$this->obj->value1 = 'xxxx'; .....
4)之后用断言检查你的输出。 SaveData 将 return 一个你写的函数中的字符串。总是。所以你应该试试 assertEquals
5)您可以将 assertNotNull 作为辅助断言,因为您的代码可以更改。测试你的代码应该做什么和不应该做什么是一个很好的做法。
顺便说一句,您应该尝试更多地了解模型代表什么。不断进步。
我对 php 和 php 单元测试用例很陌生。我正在尝试编写一个测试用例以在测试用例中使用 $_POST 将值保存到数据库中。当我执行测试用例时,POST 返回空值。请帮助如何在 php 单元测试中使用 $_POST 变量。
TEST CLASS-
public function setUp() {
$this->resetInstance();
$this->CI->load->model('save_data_model');
$this->obj = $this->CI->save_data_model;
}
public function test_SaveData()
{
$_SERVER['REQUEST_METHOD'] = 'POST';
$_POST = array('value1'=>'10','value2'=>'100');
$actual = $this->obj->SaveData('1');
$this->assertNotNull($actual);
}
}
MODEL -
public function SaveData($id)
{
$sql['value1'] = $_POST['js_data']['input_value1'];
$sql['value2'] = $_POST['js_data']['input_value1'];
$sql['id'] = $id;
if(!empty($id))
{
$this->db->where('id',$id);
if($this->db->update('table_name',$sql))
{
return 'Updated';
}
else
{
return 'Not Updated';
}
}
}
Severity: NoticeMessage: Undefined index: js_dataFilename in SaveData.php
Database error: A Database Error Occurred
NULL VALUE FOR value1
UPDATE `table_name` SET `value1` = NULL, `value2` = NULL
WHERE `id` = '1'
我看你是一个 phpunit/tests 新手。这是好事。
您正在设置 $_POST['value1'] 但您打算在您的模型中检索 $_POST['js_data']['input_value1']。
但是,除此之外,我可以给你一些建议:
1) 不要在你的模型中使用 $_POST 2) 为模型的属性声明 public 个变量(例如 public $value1; public $id;...) 3) 然后,在你的测试中你应该设置:$this->obj->value1 = 'xxxx'; ..... 4)之后用断言检查你的输出。 SaveData 将 return 一个你写的函数中的字符串。总是。所以你应该试试 assertEquals 5)您可以将 assertNotNull 作为辅助断言,因为您的代码可以更改。测试你的代码应该做什么和不应该做什么是一个很好的做法。
顺便说一句,您应该尝试更多地了解模型代表什么。不断进步。