gpt4 book ai didi

php - 在 Laravel 中使用 Mockery/phpUnit 时出错

转载 作者:可可西里 更新时间:2023-10-31 23:02:18 25 4
gpt4 key购买 nike

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

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

关于php - 在 Laravel 中使用 Mockery/phpUnit 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37576867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com