Test etmek için bir Rails denetleyici eylemim var. Bu eylemde, User.can bir yöntem mi? farklı parametrelerle birkaç kez çağrılır. Bunun için test durumlarından birinde, User.can? ('Çekme') çağrıldığından emin olmak istiyorum. Ama User.can'ın çağrışımlarını umursamıyorum? diğer parametrelerle.Mocha: Farklı parametrelerle birden çok çağrı olduğunda bir yöntemin beklentisini nasıl ekleyebilirim
User.any_instance.expects(:can?).with('withdraw').at_least_once.returns(true)
Ama testi User.can beklenmedik çağırma belirten iletisiyle başarısız oldu ('mevduat'):
def action_to_be_tested
...
@user.can?('withdraw')
...
@user.can?('deposit')
...
end
ben testte aşağıda çalıştı?. 'Deposit' parametresiyle başka bir beklenti eklerseniz, test geçti. Ancak, "geri çekme" parametresiyle çağrıma odaklanabileceğim herhangi bir yol olup olmadığını merak ediyorum (çünkü diğer çağrılar bu test vakasıyla ilgisizdir).
[API] 'nın (http://gofreerange.com/mocha/docs/Mocha/Expectation.html#with-instance_method) literal değerleri (değişkenlerle doğrudan karşılaştırmalar) desteklediği veya bloğa izin verdiğinin farkındaydım. "Not (...)" yapısının nereden geldiğinden emin değilim. Daha detaylı olarak konuşabilir misiniz? – Pysis
@Pysis 'Not()', with with() 'ile kullanılan [Mocha :: ParameterMatchers] (http://gofreerange.com/mocha/docs/Mocha/ParameterMatchers.html) adresinden gelir. HasKey() gibi bir deve hastası olabilirler ya da has_key() 'gibi bir yılan gibi olabilirler. 'Değil' deve vakası olmalı, çünkü bir anahtar kelime. –