2011-11-30 3 views
2

나는이 시점에서 숲 속에서 길을 잃다. 필자는 intellisense가 나에게서 뭔가를 숨기고 있다는 생각으로 계속해서 같은 변화를 반복한다.목록을 반환하는 저장소를 조롱하다

단일 유형 및 목록 추가 (및 쿼리) 테스트를 위해 조롱 된 저장소를 만들려고합니다.

public Mock<IBaseRepository<DNS_Entity>> RepositoryFakeObject() 
    { 
     var _dns = new List<DNS_Entity>(); 
     var mock = new Mock<IBaseRepository<DNS_Entity>>(); 

     mock.Setup(x => x.Add(It.IsAny<DNS_Entity>())) 
      .Callback((DNS_Entity e) => _dns.Add(e)); 

     mock.Setup(x => x.SelectALL()).Returns(_dns.AsQueryable()); 
     return mock; 
    } 

그러나, 목록에 대한 비슷한 할 내 시도 그냥 작동하지 않습니다 :로 하나의 repo는 노력하고 있습니다. 특히 설치 프로그램의 반품은 저를 비웃고 있습니다. 나는이 시점에서 무엇을 가지고

입니다 : 내가 여기 실종 무엇

[Test] 
    public void AddNewList() 
    { 
     var mock = RepositoryFakeList(); 

     var lst = new List<DNS_Entity> 
         { 
          new DNS_Entity {FirstName = "added", LastName = "From Test"}, 
          new DNS_Entity {FirstName = "added2", LastName = "From Test2"} 
         }; 

     mock.Object.Add(lst); 

     Assert.IsTrue(mock.Object.SelectALL().Count() == 2); 
    } 

:

public Mock<IBaseRepository<List<DNS_Entity>>> RepositoryFakeList() // Mock<IBaseRepository<List<DNS_Entity>>> 
    { 
     var _dns = new List<DNS_Entity>(); 
     var mock = new Mock<IBaseRepository<List<DNS_Entity>>>(); 

     mock.Setup(x => x.Add(It.IsAny<List<DNS_Entity>>())) 
      .Callback((List<DNS_Entity> le) => _dns.Add(le.Select(e => e) as DNS_Entity)); 

     // mock.Setup(x => x.SelectALL()).Returns((IQueryable<List<DNS_Entity>>) (_dns)); 

     mock.Setup(x => x.SelectALL()).Returns(_dns.AsQueryable()); 
     return mock; 

    } 

는 궁극적으로 내가 좋아하는 추가 테스트와 함께 뭔가를하고 싶습니다? 전에 이런 repo를 조롱 한 적이 없으므로 아마 몇 가지 기본 교리를 위반했을 것입니다. 그렇다면 알려주세요.

감사합니다.

답변

4

나는

... 당신이이 IEnumerable<DNS_ENTITY> 반환하지만 당신이 null

시도 될 것이다 DNS_ENTITY에 캐스팅 Select를 사용할 때 문제가이 라인

.Callback((List<DNS_Entity> le) => _dns.Add(le.Select(e => e) as DNS_Entity)); 

으로 생각

.Callback((List<DNS_Entity> le) => _dns.AddRange(le)); 
+0

당신은 오늘 나의 영웅이고, 모자의 팁을 얻습니다. 잘 했어. 또한 반환 유형을 모의 > (목록 없음 <>)으로 변경했으며 그게 전부입니다. 건배! – BryanGrimes

+0

아 물론 물론 ... 걱정 마세요. – aqwert

관련 문제