대를 IEnumerable 일어나는가 나는이유는이 목록
public static void SomeMethod (List<SomeClass> group)
{
IEnumerable<SomeClass> groupWithFalse =(from SomeClass gr in group
where gr.SomeProp== false
select gr);
foreach (SomeClass grFalse in groupWithFalse)
{
grFalse.Save();
}
if (groupWithFalse.Any())
{
// do some stuff
}
}
(는 단위 테스트의 많은에 사용 변경할 수 없습니다) DL 절약에 대한 모의 구현은 다음 BL 방법입니다있다 :
public void Save()
{
group.SomeProp = true;
}
만약 내가 단위 테스트를하려고하면 흐름의 마지막 문을 예를 들어 (groupWithFalse.Any())
문이 실패로 분명히 그 속성이 false로 설정되어 더 이상 요소가 있습니다. I가 비즈니스 로직의 코드를 변경하는 경우 :
public static void SomeMethod (List<SomeClass> group)
{
List<SomeClass> groupWithFalse = new List<SomeClass>();
foreach (var g in group)
{
if (g.SomeProp == false)
groupWithFalse.Add(g);
}
foreach (SomeClass grFalse in groupWithFalse)
{
grFalse.Save();
}
if (groupWithFalse.Any())
{
// do some stuff
}
}
조건문 if (groupWithFalse.Any())
단위 테스트에 실패하지 않습니다. 왜 이런 일이 생길까요? 감사합니다.
Google 'linq lazy evaluation' –