[英]Groovy default method parameters
如何調用下面的方法def只傳遞interactionId,transactionId,awResponseFile,testMethodName和expectedNumberOfConsumers ?
方法定義
void verifyPersistence(String interactionId, String transactionId,
File rawResponseFile, String testMethodName,
int expectedNumberOfDatasourceProductResponseRaws=1,
String dsProductName=datasourceSpec['creditreport.name'],
int expectedNumberOfDatasourceProductResponses=1,
int expectedNumberOfConsumers=1,
int expectedNumberOfAddresses=1 )
方法調用
verifyPersistence interactionId.persistedVersion(), transactionId,
results, testName.methodName, expectedNumberOfConsumers:8
例外
groovy.lang.MissingMethodException: No signature of method: verifyPersistence() is applicable for argument types: (java.util.LinkedHashMap, java.lang.String, java.lang.String, java.io.File, java.lang.String) values: [[expectedNumberOfConsumers:8], 3130001030065, 10003000000890059, C:\results, multiple consumers contracts]
Possible solutions:
verifyPersistence(java.lang.String, java.lang.String, java.io.File, java.lang.String),
verifyPersistence(java.lang.String, java.lang.String, java.io.File, java.lang.String, int),
verifyPersistence(java.lang.String, java.lang.String, java.io.File, java.lang.String, int, java.lang.String),
verifyPersistence(java.lang.String, java.lang.String, java.io.File, java.lang.String, int, java.lang.String, int), verifyPersistence(java.lang.String, java.lang.String, java.io.File, java.lang.String, int, java.lang.String, int, int)
at HitmultipleconsumersPersistSpec.groovy:151)
當您包含映射條目( key:value
)時,它們會自動收集,放入散列映射並作為第一個參數傳遞。 Groovy,現在,沒有命名參數。 對於那個特定的情況,我認為你最好使用該方法的地圖:
def verifyPersistence(Map map) {
String interactionId = map.interactionId
String transactionId = map.transactionId
File rawResponseFile = map.rawResponseFile
String testMethodName = map.testMethodName
int expectedNumberOfDatasourceProductResponseRaws = map.expectedNumberOfDatasourceProductResponseRaws ?: 1
String dsProductName = map.dsProductName ?: datasourceSpec['creditreport.name']
int expectedNumberOfDatasourceProductResponses = map.expectedNumberOfDatasourceProductResponses ?: 1
int expectedNumberOfConsumers = map.expectedNumberOfConsumers ?: 1
int expectedNumberOfAddresses = map.expectedNumberOfAddresses ?: 1
}
verifyPersistence(
interactionId : interactionId.persistedVersion(),
transactionId : transactionId,
rawResponseFile : results,
expectedNumberOfDatasourceProductResponseRaws : 14,
expectedNumberOfConsumers:8
)
您顯然不需要將每個參數分配給變量,您只需使用map.field
語法即可。 如果您希望對其進行類型檢查,那么我認為您最好使用對象來封裝參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.