0

我已经安装了 Pear 并使用 Pear 来安装 PHPUnit 和 Mockery。我在 elipse 中成功运行了 PHPUnit(pear 目录配置为项目中的包含路径)。

我想使用 Mockery 但 eclipse 一直给我这个错误:

PHP Fatal error: Class 'deepend\Mockery' not found

我在这里遵循了建议:http: //pkp.sfu.ca/wiki/index.php/Configure_Eclipse_for_PHPUnit 但不确定如何加载库。这是我的代码:

<?php
use \Mockery as m;

define('BASEPATH', (dirname(__FILE__) . '/../../../../sys'));

require_once (dirname(__FILE__) . '/../models/products_model_composed.php');

class ProductsModelTest extends PHPUnit_Framework_TestCase { 
    private $products;
    private $mock_ci_model;


public function setUp(){
    $this->products = new products_model_composed();
    $this->define_ci_mock();
    $this->products->__set('ci_model', $this->mock_ci_model);
}

private function define_ci_mock(){
    $ci = m::mock('CI_Model');
    $ci->shouldReceive('ee')->once()->andReturn($this);
}

请参见函数 define_ci_mock 的第一行。这是调用 Mockery 但未找到的地方。你能为我指出正确的方向吗?我已经安装了 Mockery 0.8.0

4

1 回答 1

0

啊哈!就在我放弃这一天的时候,我找到了答案!

需要首先使用以下参数运行引导文件:

require_once 'Mockery/Loader.php';
require_once 'Hamcrest/Hamcrest.php';
$loader = new \Mockery\Loader;
$loader->register();

https://github.com/padraic/mockery/blob/master/README.markdown

Mockery 附带了一个自动加载器,因此您无需使用 require_once() 调用来乱扔测试。要使用它,请确保 Mockery 在您的 include_path 上,并将以下内容添加到您的测试套件的 Bootstrap.php 或 TestHelper.php 文件中:

于 2013-05-29T14:43:52.157 回答