Trong phpunit chúng ta có thể xác định phương pháp này được gọi với biệtKiểm tra xem phương pháp mô hình được gọi là không có bất kỳ thông số thông qua (trong phpunit)
->with($this->equalTo('foobar'))
hoặc bất kỳ
->with($this->anything())
tham số.
Nhưng có cách nào để xác định rằng phương thức đã được gọi mà không có tham số nào cả?
Đây là thử nghiệm Tôi hy vọng đến thất bại:
public function testZ()
{
$a = $this->getMock('q');
$a->expects($this->once())
->method('z')
->with(); // <--- what constraint to specify here?
$a->z(1);
}
UPD:
Câu hỏi đặt ra có tính chất lý thuyết, vì vậy tôi không có bất kỳ ví dụ thực tế đời sống. Một số trường hợp nó có thể hữu ích tôi có thể nghĩ ngay bây giờ là:
public function testMe($object)
{
$object->foo();
}
Và chúng ta hãy giả sử rằng testMe
nên (do thiết kế và do yêu cầu) luôn gọi phương thức không có tham số (giả sử foo()
có những mặc định). Bởi vì bất kỳ tham số không mặc định (chính xác hơn: bất kỳ tham số nào! = Mặc định, mà chúng ta chưa biết và có thể thay đổi một cách độc lập) trong trường hợp này gây hậu quả chết người.
+1 Tôi đã dành một vài phút xem qua nguồn PHPUnit trên github và có vẻ như '-> với()' chỉ hoạt động để xác định các tham số, không cấm chúng. Tôi không thể thực sự nghĩ về một kịch bản mà xác minh rằng không có đối số được thông qua là cái gì bạn cần phải kiểm tra, mặc dù? Tôi muốn được quan tâm để nghe lý do tại sao bạn cần phải xác minh rằng không có đối số đã được gửi. Vượt qua một đối số khi không ai dự kiến sẽ không phá vỡ bất cứ điều gì và bạn có thể không vượt qua trong một NULL khi có một đối số dự kiến rằng không thể được cung cấp? – rdlowrey
@rdlowrey: thêm bản cập nhật giải thích ;-) – zerkms
@rdlowrey: 'bạn không thể bỏ qua NULL khi có đối số dự kiến không thể cung cấp' --- không bạn không thể. Phương pháp vẫn có thể có các tham số tùy chọn – zerkms