Я слишком пытался смоделировать класс обслуживания в моем модульном тестировании Laravel 6, но вызов переходит к реальному методу, а не к поддельному ответу. Вот класс People, который я пытаюсь смоделировать -
class People
{
public static function checkCredentials($username, $password) {
// some code, which is not supposed to execute while unit testing.
}
}
Контроллер, ответственный за выполнение этого, -
class AuthController extends Controller {
public function login(Request $request) {
$auth = People::checkCredentials($request->username, $request->password);
dd($auth); // I am expecting mocked response here i.e., ['abc'].
}
}
Вот мой тестовый класс -
class LoginTest extends TestCase {
/** @test */
public function a_user_can_login() {
$this->mock(People::class, function ($mock) {
$mock->shouldReceive('checkCredentials')
->withArgs(['username', 'password'])
->once()
->andReturn(['abc']);
});
$this->assertTrue(true);
}
}
Дамп в контроллере возвращает реальный ответ, а не поддельный. Мне нужна помощь, чтобы понять, что я делаю неправильно. Благодаря.