【问题标题】:ZF2 & Doctrine2: mock EntityRepository::findOneByFieldZF2 & Doctrine2:模拟 EntityRepository::findOneByField
【发布时间】:2013-09-22 10:57:09
【问题描述】:

是否可以模拟

EntityRepository::findOneBy{$field}($value)

功能?

使用:

->getMock('EntityRepository')
->expects($this->any())
->method('findOneByField') 

总是解析为空,因为findOneByField 不是真正的函数,而是由__call() 映射。至少我认为这是问题所在..

【问题讨论】:

    标签: unit-testing doctrine-orm zend-framework2 phpunit


    【解决方案1】:

    您可以模拟__call 方法。举个简单的例子:

    类:

    class A { 
    
        public function __call($fname, $args) {
            if($fname === 'test') {
                return 'test';
            }   
        }   
    }
    

    测试:

    class ATest extends PHPUnit_Framework_TestCase
    {
    
        public function testA() {:
            $mock = $this->getMock('A');
    
            $mock->expects($this->any())
                ->method('__call')
                ->with('test')
                ->will($this->returnValue('test'));
    
            var_dump($mock->test());
        }   
    }
    

    您可以对EntityRepository 执行相同的操作。我只是手头没有测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      相关资源
      最近更新 更多