Tôi đang viết kiểm tra cho ứng dụng Laravel của tôi bằng cách sử dụng thư viện Codeception. Tôi đang sử dụng các Laravel5 module, và có nó được cấu hình với cleanup
có nghĩa là tất cả các thử nghiệm sẽ chạy bên trong một giao dịch cơ sở dữ liệu, để cơ sở dữ liệu thử nghiệm của tôi không được làm đầy với dữ liệu thử nghiệm.Thử nghiệm một tuyến đường Laravel 5 với quy tắc tồn tại qua Codeception
Một trong những thiết bị đầu cuối tôi là thử nghiệm có quy tắc xác nhận sau thiết lập chống lại nó qua yêu cầu Mẫu:
public function rules()
{
return ['user_id' => 'required|exists:users,id'];
}
Các thử nghiệm mà tôi đã viết để POST để endpoint này như sau:
public function store(ApiTester $I)
{
// Create a couple of users
$users = factory(\App\Models\User::class, 2)->create();
$I->wantTo('ask someone to be my friend');
$I->authenticateAs($users[0]);
$I->sendPOST('users/' . $users[0]->id . '/friendships', [
'user_id' => $users[1]->id
]);
$I->seeResponseCodeIs(201);
}
Kiểm tra này luôn không thành công. Sau khi điều tra, tôi có thể thấy rằng nó không thành công vì yêu cầu không xác thực do quy tắc exists:users,id
. Nếu tôi thay đổi các thiết lập Codeception để không thực thi các kiểm tra bên trong một giao dịch, trình duyệt tính hợp lệ của Laravel có thể nhìn thấy sự tồn tại của người dùng mà tôi đã tạo khi bắt đầu bài kiểm tra của tôi và bài kiểm tra đã qua. Vì vậy, câu hỏi của tôi là, có cách nào để tôi có thể duy trì hành vi gói mỗi bài kiểm tra trong một giao dịch cơ sở dữ liệu hay không, và trình xác nhận của Laravel có thể xem các bản ghi mà tôi tạo trong các bài kiểm tra của tôi không? Không.
Tôi có cùng một vấn đề chính xác bất kỳ trợ giúp nào sẽ được đánh giá cao – Fabrizio
Bạn có thể thêm cấu hình bộ cho câu hỏi của mình không? – Naktibalda