Tôi có một hành động của trình điều khiển Rails để kiểm tra. Trong hành động đó, một phương thức User.can? được gọi nhiều lần với các tham số khác nhau. Trong một trường hợp thử nghiệm cho nó, tôi muốn chắc chắn rằng User.can? ('Rút tiền') được gọi. Nhưng tôi không quan tâm đến lời gọi của User.can? với các thông số khác.Mocha: Cách thêm kỳ vọng của một phương thức khi có nhiều lời gọi với các tham số khác nhau
def action_to_be_tested
...
@user.can?('withdraw')
...
@user.can?('deposit')
...
end
tôi đã cố gắng bên dưới trong các thử nghiệm:
User.any_instance.expects(:can?).with('withdraw').at_least_once.returns(true)
Nhưng cuộc thử nghiệm thất bại với thông báo chỉ gọi bất ngờ của User.can ('huy động')?. Nếu tôi thêm một kỳ vọng khác với thông số 'tiền gửi', thì thử nghiệm đã trôi qua. Nhưng tôi tự hỏi nếu có bất kỳ cách nào như vậy mà tôi chỉ có thể tập trung vào lời gọi với tham số 'rút' (vì các lời gọi khác không liên quan đến trường hợp thử nghiệm này).
Tôi đã biết [API] (http://gofreerange.com/mocha/docs/Mocha/Expectation.html#with-instance_method) hỗ trợ các giá trị bằng chữ (so sánh trực tiếp với biến) hoặc sinh ra khối, nhưng Tôi không biết chắc cấu trúc 'Not (...)' xuất phát từ đâu. Bạn có thể nói chi tiết hơn không? – Pysis
@Pysis 'Not()' xuất phát từ [Mocha :: ParameterMatchers] (http://gofreerange.com/mocha/docs/Mocha/ParameterMatchers.html) được sử dụng với 'with()'. Chúng có thể là trường hợp lạc đà như 'HasKey()' hoặc trường hợp con rắn như 'has_key()'. 'Không' phải là trường hợp lạc đà vì đó là một từ khóa. –