Đây là một sau lên của How to wait for a page reload in Laravel integration testingTại sao tôi phải để tải lại Auth :: dùng() khi thực hiện hội nhập thử nghiệm
Những gì tôi đang làm là để chỉnh sửa hồ sơ của người dùng và sau đó hiển thị lại xem.
hành động Hồ sơ của tôi: (UserController)
public function profile(){
return view('user/profile');
}
Quan điểm chứa mã như
{{ Auth::user()->firstname }}
tại trong thử nghiệm của tôi, người già (không thay đổi) dữ liệu người dùng được hiển thị.
Các thử nghiệm:
protected function editUserProfile()
{
$this->visit('/user/profile');
$firstName = $this->faker->firstname;
$lastname = $this->faker->lastname;
$this->within('#userEditForm', function() use ($firstName, $lastname) {
$this->type($firstName, 'firstname');
$this->type($lastname, 'surname');
$this->press('Save')
->seePageIs('/user/profile')
->see($firstName) # here the test fails
->see($lastname);
});
}
Khi tôi thay đổi UserController như thế này:
public function profile(){
Auth::setUser(Auth::user()->fresh());
return view('user/profile');
}
tất cả mọi thứ hoạt động tốt.
Bây giờ tôi muốn hiểu, tại sao lại như thế này.
Tại sao thử nghiệm tích hợp hoạt động khác với trình duyệt trong trường hợp đó? Có cách nào tốt hơn để căn chỉnh hành vi đó để các thử nghiệm chỉ thất bại nếu có một "vấn đề thực sự"? Hoặc là mã của tôi chỉ xấu?
đầu ra của thử nghiệm thất bại là gì? '# UserEditForm' gửi đến đâu, nó có phải là ajax không? Nếu nó là, tôi không nghĩ rằng bạn có thể sử dụng ajax với bộ thử nghiệm cơ bản của Laravel, bạn sẽ cần phải sử dụng selen - hãy xem gói này: https://github.com/Modelizer/Selenium – haakym
Nó không phải là AJAX. Đầu ra giống như "dự kiến sẽ thấy John", khi tôi thay đổi tên người dùng từ Alice sang John. Vì vậy, nó đang lấy dữ liệu cũ. Khi tôi tải lại người dùng Auth ::() tất cả đều hoạt động tốt – Alex
Tại sao bạn không sử dụng: '$ this-> type ($ firstName, 'firstname') -> type ($ lastname, 'họ') -> markTestSkipped() -> nhấn ('Save') -> seePageIs ('/ user/profile') -> xem ($ firstName) # ở đây bài kiểm tra thất bại-> xem ($ lastname); '? – user3482682