2016-10-13 29 views
5

Bazı testler yapmak için #send'i Ruby'de kullanmaya çalıştığım özel bir yöntem var. Yöntem karmaşıktır ve sınıfın dışında açığa vurmak istemiyorum ve bu yüzden bu yöntemi test etmek istiyorum ancak bunu bir kamu yöntemi olarak listelemem de gerekmez. Anahtar kelime argümanları var. Yöntemi çağırmak için send'u nasıl kullanabilirim, aynı zamanda anahtar kelime argümanlarını/adlandırılmış parametreleri iletebilir miyim? Bir yolu var mı?Ruby'de anahtar kelime bağımsız değişkenleri ile (: gönder) kullanma?

yöntem aşağıdaki gibidir:

def some_method(keyword_arg1:, keyword_arg2:, keyword_arg3: nil)

cevap

11

anahtar kelime bağımsız değişken nasıl tanımlandığına bağlıdır.

onlar herhangi bir nedenle satır içi tanımlanan ediyorsanız

, satır içinde geçmesi:

SomeClass.send(:some_method, {keyword_arg1: 'foo', keyword_arg2: 'bar'}) 

bir karma tanımlanan ediyorsanız, bunun yerine açmaktır:

hash = {keyword_arg1: 'baz', keyword_arg2: 'bing'} 
SomeClass.send(:some_method, **hash)