2012-07-05 2 views
0

2 개의 열이있는 테이블이 있습니다.여기서 lambda를 사용하는 절은 단위 테스트에서 항상 true를 반환합니다.

| DealerCode | TransactionID | 
| 222223  | 98766   | 

그리고 난 당신이 내 테스트에서 볼 수 있듯이,

public List<Transaction> GetCurrentTransaction(string dealerCode, string transactionId) 
    { 
     return context.Transactions.Where(c => c.DealerCode == dealerCode && (c.TransactionID == transactionId)).ToList(); 
    } 

내가 단위 테스트 그것을 시도하지만 매번, 그것은 항상 true 표시 목록을 반환이 방법을 가지고, 내가 purposedly 잘못을 만들었 매개 변수가 실패 할 수 있습니다.

Assert.IsNotNull(tran.GetCurrentTransaction("2222231", "987661")); 

나는 포럼을 검색하고 아무런 소용이없는 검색을 시도했다.

+6

그러면 정의가 null이 아닌 빈 목록이 반환됩니다. – ChaosPandion

답변

1

메서드는 List의 인스턴스를 반환하고 조건이 일치하는 레코드가 없기 때문에 항목이 없어도 목록 자체는 계속 만들어 지므로 NULL과 같지 않습니다. 단위 테스트 통과.

0

@ChaosPandion 바로 자신의 의견에 있었다. GetCurrentTransaction 메서드는 항상 null이 아닌 목록의 인스턴스를 반환합니다. 일치하는 항목이없는 경우 목록에는 항목이 없습니다. 다음과 유사한 코드를 사용하여 결과를 얻을 수 있습니다. 당신이 MSTEST를 사용하는 경우

Assert.IsTrue(tran.GetCurrentTransaction("2222231", "987661").Any()); 
1

을 추가 할 수 있습니다 :

Assert.IsTrue(tran.GetCurrentTransaction("2222231", "987661").Any()); 

Any() 검사를 목록에서 개체가있는 경우. 기능 단위 테스트는 Any에서 조건을 지정합니다.

관련 문제