我正在尝试为我的测试中的一些接口创建一个mockery-mock。
但是模拟的结果是一个模拟对象,它不是接口的实例。例如,生成的模拟类不“实现MyInterface”。
我正确地检查并发现Mockery可以定位并加载我的接口(通过在mockery类中添加一些echo)
mockery没有声明mocked-class实现它所请求的接口,这是真的吗?这不是完全绕过了TTD的良好实践吗?
$mock = m::mock('My\\Cool\\Interface');
//now $mock is not aninstanceof My\Cool\Interface希望能收到你的回音。
发布于 2015-03-19 21:30:23
有一段时间,我认为模仿界面对我来说并不起作用,但最终我发现了一个导致模仿不起作用的拼写错误。
目前,模拟接口对我来说是有效的。
下面是一个例子。
示例接口
interface Convertor
{
/**
* @return array
*/
public function getIds();
}在phpunit测试中创建模拟
$convertor = Mockery::mock('Convertor');
$convertor->shouldReceive('getIds')->andReturn([10, 20]);你能发布对你不起作用的代码吗?
发布于 2014-11-20 17:32:19
回答我自己的问题:是的,mockery在实现接口的mock-object方面没有做好适当的工作。
对我来说,这种方式使得mockery对于正确的测试驱动开发没有用处。:-(
https://stackoverflow.com/questions/26863480
复制相似问题