2011-09-23 5 views
1

mxunit에서 구조체 배열을 반환하는 함수를 테스트하는 가장 좋은 방법은 무엇입니까? 지금 나는 이런 식으로하고 있어요.mxunit에서 구조체 배열 검사

var actual = variables.pbj.getFunctions(); //returns [{name="getAccountNumber", value="0"},{name="getAccountName", value=""}] 
var found = false; 

//look for get account number 
for(var i = 1; i lte arrayLen(actual); i ++){ 
    if(structKeyExists(actual[i],"name") && actual[i].name eq "getAccountNumber"){ 
     found = true; 
     break; 
    } 
} 

if(NOT found){ 
    fail("Struct key getAccountNumber didn't exist"); 
} 

    found = false; 

//look for account name 
for(var i = 1;i lte arrayLen(actual); i ++){ 
    if(structKeyExists(actual[i],"name") && actual[i].name eq "getAccountName"){ 
     found = true; 
     break; 
    } 
} 

if(NOT found){ 
    fail("Struct key getAccountName didn't exist"); 
} 

다소 힘이 빠지고 허약합니다. 더 나은 방법을 아는 사람이 있습니까?

답변

2

이 내가 할 것 인 것이다 :

var actual = variables.pbj.getFunctions(); //returns [{name="getAccountNumber", value="0"},{name="getAccountName", value=""}] 

for (thisStruct in actual) { 
    if(NOT structKeyExists(thisStruct,"name") || thisStruct.name neq "getAccountNumber"){ 
     fail("Struct key getAccountNumber didn't exist"); 
    } 
    if(NOT structKeyExists(thisStruct,"name") || thisStruct.name neq "getAccountName"){ 
     fail("Struct key getAccountName didn't exist"); 
    } 
} 
+0

지금은 그것에 대해 생각, 테스트는 항상 실패 할 거라고,하지만, 이름이 두 값되지 않을 수 있기 때문이다. 그래도 내 코드에 대한 일반적인 아이디어를 얻을 수 있다고 생각합니다. –

+0

구조체 배열을 반환한다는 것을 잊지 마십시오. 객체 메타 데이터에서 생성 된 이후로 배열은 특정 순서로 더 복잡해질 수 있습니다. – bittersweetryan

+0

여기에서 고려할 수있는 유일한 변형은 첫 번째 문제가 발생하자마자 바로 실패하지 않고 문제가 발생할 때마다 failuresList 변수에 실패 메시지를 추가하는 것입니다 (예 : "getAccountNumber missing array element #나는#"). 일단 모든 것을 검사했으면 실패 목록의 길이를 확인하고 길이가 0이 아니면 실패합니다 (실패 목록). 때로는 첫 번째 실패를 막기보다는 여러 피드백을 얻는 것이 편리합니다. 그것은 상황에 따라 다르지만. –