2017-08-11 46 views
1

所以我已经得到codeigniter和phpunit播放不错,但我有点困惑如何实例化控制器。如何在phpunit中实例化Code​​igniter3控制器?

我已经发现了一些指南,建议你应该测试控制器,就像这样:

class Welcome_test extends TestCase 
{ 
    public function test_index() 
    { 
     $output = $this->request('GET', ['Welcome', 'index']); 
     $this->assertContains('<title>Welcome to CodeIgniter</title>', $output); 
    } 
} 

虽然这在纸面上看起来不错,一个错误告诉我,测试用例没有request()方法。

同样的指南介绍了测试这样一个模型:

class Inventory_model_test extends TestCase 
{ 
    public function setUp() 
    { 
     $this->resetInstance(); 
     $this->CI->load->model('shop/Inventory_model'); 
     $this->obj = $this->CI->Inventory_model; 
    } 

    public function test_get_category_list() 
    { 
     $expected = [ 
      1 => 'Book', 
      2 => 'CD', 
      3 => 'DVD', 
     ]; 
     $list = $this->obj->get_category_list(); 
     foreach ($list as $category) { 
      $this->assertEquals($expected[$category->id], $category->name); 
     } 
    } 

    public function test_get_category_name() 
    { 
     $actual = $this->obj->get_category_name(1); 
     $expected = 'Book'; 
     $this->assertEquals($expected, $actual); 
    } 
} 

这使我尝试其他的东西,而我现在已经在测试对象的公共财产CI &实例,这样我可以像这样访问:

...$this->CI... 

我假设该对象的一个​​方法将通过名称实例化控制器。例如:

$this->CI->load->controller('ControllerClassName'); 

这样的方法是否存在?当我使用它时,我是否像这样访问类?

$this->CI->load->controller('ControllerClassName'); 
$c = new $this->CI->ControllerClassName(); 

回答

相关问题