我正在尝试使用simpletest测试我的codeigniter系统,但是我不断收到错误。我是PHP和codeigniter的新手,所以请放心。
Fatal error: Call to a member function add() on a non-object in C:\xampp\htdocs\di2\application\tests\simple_test.php on line 35
这是我的测试文件,目前我正在尝试将新用户添加到数据库中。
require_once BASEPATH."core/Model.php";
require_once APPPATH."models/Users_model.php";
class ExampleTest extends UnitTestCase
{
function ExampleTest()
{
parent::__construct('Example tests');
}
///// All functions starting with "test" will be tested /////
function testSimpleStuff()
{
$name = 'Andreas';
$online = TRUE;
$this->assertEqual($name, 'Andreas');
$this->assertTrue($online);
}
//There are already 8 members in the table
function testAdd()
{
$this->model->add("new member");
$this->assertEqual($this->model->get(9),'new member');
$this->assertNull($this->model->get(0));
$this->assertNull($this->model->get(10));
}
}
这是我打电话的模型:
class Users_model extends CI_Model
{
function __construct()
{
parent::__construct();
}
//Used to retrieve all of the members from the database and list them by their id in descending order
function get($id = null)
{
$this->db->select('id, first_name, last_name, dob, email_address, phone_number, address_line_1, address_line_2, town, county, postcode, student, volunteer');
$this->db->from('Users');
if (!is_null($id)) $this->db->where('id', $id);
$this->db->order_by('id', 'desc');
return $this->db->get()->result();
}
function add($data)
{
$this->db->insert('Users', $data);
return $this->db->insert_id();
}
function update($data, $id)
{
$this->db->where('id', $id);
$this->db->update('Users', $data);
return $this->db->affected_rows();
}
function delete($id)
{
$this->db->where('id', $id);
$this->db->delete('Users');
return $this->db->affected_rows();
}
function filterUsers()
{
return $this->db->get('Users')->result();
}
}
任何人都可以告诉我为什么我会收到此错误,以及如何解决此问题。提前干杯。
答案 0 :(得分:1)
这不是在codeigniter中调用模型的正确方法。
$this->model->add("new member");
应该是 -
$this->load->model('Users_model');
$this->Users_model->add('new member');
答案 1 :(得分:0)
这是因为,在CodeIgntier中,您需要明确地包含您的模型(我们也可以在autoload.php中执行此操作)。
在你的控制器的构造函数
中function ExampleTest()
{
parent::__construct('Example tests');
$this->load->model('Users_model');
}
现在,从您的控制器调用它,如:
$this->Users_model->add("new member");