![](/img/trans.png)
[英]Laravel testing with PHPUnit and Mockery - Setting up dependencies on Controller test
[英]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.