Làm thế nào để bạn giả lập (mock) một phương thức static của facade?
Làm thế nào để bạn giả lập (mock) một phương thức static của facade?
Để giả lập một phương thức static của facade trong Laravel, bạn có thể sử dụng phương thức shouldReceive
cung cấp bởi Laravel, điều này sẽ trả về một thể hiện của đối tượng giả lập (mock object) từ thư viện Mockery. Đây là một ví dụ cụ thể:
Cache::shouldReceive('get')
->once()
->with('key')
->andReturn('value');
Trong ví dụ trên, chúng ta đang giả lập phương thức get
của facade Cache
. Phương thức shouldReceive
được gọi trên facade Cache
để chỉ định rằng khi phương thức get
được gọi với tham số là 'key'
, nó sẽ trả về 'value'
. Phương thức once
chỉ định rằng phương thức get
này sẽ được gọi đúng một lần trong quá trình kiểm thử[1][2][4][5][6][7].
Các facade trong Laravel không giống như các phương thức static thông thường vì chúng có thể được giả lập. Facade thực chất là một proxy static chuyển tiếp đến một thể hiện thực sự, và do đó, chúng có thể được kiểm thử hoặc giả lập. Laravel hỗ trợ việc này ngay lập tức với phương thức shouldReceive
[2][4][5][6][7].
Ngoài ra, bạn cũng có thể sử dụng phương thức createMock
để tạo một đối tượng giả lập từ thể hiện gốc, sau đó sử dụng shouldReceive
...
middle
Chưa có bình luận nào