繁体   English   中英

在Laravel中使用Mockery / phpUnit时出错

[英]Error using Mockery/phpUnit in Laravel

我是一个新手开发人员,试图为现有的laravel应用程序启动测试套件,但我没有测试经验。 现在我只是试图进行一些测试,以获得一些信心和经验来编写更多实质性测试。 我正在尝试测试一个模型上的关系(我意识到这不是一个非常明智的测试),并试图创建一个模拟的模型对象(我也理解在sqlite数据库的内存中做这个更好但是主要的这里的目标是测试控制器,但我不知道如何处理那里的身份验证问题)。 我有以下简单,愚蠢的测试:

public function testFoo()
{
    $lead = m::mock('Lead');

    $this->mock->shouldReceive('program')->once();

    $this->assertEquals($lead->program_id, $lead->program->id);
}

但是我收到以下错误:

LeadTest::testFoo
BadMethodCallException: Received Mockery_0_Lead::getAttribute(), but no expectations were specified

我不明白这个错误试图告诉我什么,我发现没有帮助谷歌搜索问题或阅读我能找到的文档。

我假设我没有设置预期的返回值,但这是一个相当普遍的测试,硬编码预期的返回值似乎不对。 我在这里错过了什么?

我只是测试一个Laravel关系,以确保我正确设置/实现了一些东西:

public function program()
{
    return $this->belongsTo('Program');
}

问题是我错过了预期的回报值。 应该是这样的:

$this->mock->shouldReceive('program')->once()->andReturn(someObjectOrValue);

断言应该是这样的:

$this->assertEquals(someObjectOrValue, $lead->program->id);

Mockery文档比我原先想象的要冗长得多。 http://docs.mockery.io/en/latest/reference/expectations.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM