簡體   English   中英

測試控制器時忽略Laravel 5.1 Mockery期望

[英]Laravel 5.1 Mockery expectation ignored while testing controller

我有一個取決於UserManager的控制器。 這是控制器的構造函數:

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();

確保您還具有在重置Mockery時使用的tearDown方法,否則該方法將無效:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM