首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mockery模拟界面?

使用mockery模拟界面?
EN

Stack Overflow用户
提问于 2014-11-11 19:09:35
回答 2查看 2.8K关注 0票数 2

我正在尝试为我的测试中的一些接口创建一个mockery-mock。

但是模拟的结果是一个模拟对象,它不是接口的实例。例如,生成的模拟类不“实现MyInterface”。

我正确地检查并发现Mockery可以定位并加载我的接口(通过在mockery类中添加一些echo)

mockery没有声明mocked-class实现它所请求的接口,这是真的吗?这不是完全绕过了TTD的良好实践吗?

代码语言:javascript
复制
$mock = m::mock('My\\Cool\\Interface');
//now $mock is not aninstanceof My\Cool\Interface

希望能收到你的回音。

EN

回答 2

Stack Overflow用户

发布于 2015-03-19 21:30:23

有一段时间,我认为模仿界面对我来说并不起作用,但最终我发现了一个导致模仿不起作用的拼写错误。

目前,模拟接口对我来说是有效的。

下面是一个例子。

示例接口

代码语言:javascript
复制
interface Convertor
{

    /**
     * @return array
     */
    public function getIds();

}

在phpunit测试中创建模拟

代码语言:javascript
复制
    $convertor = Mockery::mock('Convertor');
    $convertor->shouldReceive('getIds')->andReturn([10, 20]);

你能发布对你不起作用的代码吗?

票数 2
EN

Stack Overflow用户

发布于 2014-11-20 17:32:19

回答我自己的问题:是的,mockery在实现接口的mock-object方面没有做好适当的工作。

对我来说,这种方式使得mockery对于正确的测试驱动开发没有用处。:-(

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26863480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档