gpt4 book ai didi

php - 测试 Controller 时忽略 Laravel 5.1 mock 期望

转载 作者:行者123 更新时间:2023-12-05 02:20:36 28 4
gpt4 key购买 nike

我有一个依赖于 UserManager 的 Controller 。这是 Controller 构造函数:

public function __construct(UserManager $manager) {
$this->manager = $manager;
}

这是测试代码。

public function test_something() {
$this->withoutMiddleware();

// Setup Input.
$user = ['email' => 'foo@bar.baz', 'password' => 'pass', 'accessLevel' => 'admin'];

// Setup expectations.
$mock = \Mockery::mock("Users\UserManager")->shouldReceive('foo');

// Bind to container... not sure whether this is needed.
$this->app->instance("Users\UserManager", $mock);

// Call action.
$this->call('POST', 'api/v1/temp/users', ['user' => $user]);
}

我对 foo 方法设置了期望值,该方法不存在,因此不会在任何地方调用,但是我的测试不会失败。

为什么?

最佳答案

您需要指定调用foo 方法的次数:

->shouldReceive('foo')->once();

确保你还有一个 tearDown 方法,你可以在其中重置 Mockery 否则它不会工作:

public function tearDown()
{
Mockery::close();
}

关于php - 测试 Controller 时忽略 Laravel 5.1 mock 期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38397791/

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