2009-02-23 22 views
21

'da bir araya getirirken Expect() yönteminin orijinal argümanlarına erişim Returns nesnesini birleştirirken alay edilmiş bir beklentiye çağrı yapmak için kullanılan parametreye erişmek mümkün mü? İşte Değeri()

göz önüne alındığında katılan objeleri ile bir taslaktır, bir Koleksiyonu alay çalışıyorum:

Class CollectionValue { 
    public Id { get; set; } 
} 
Class Collection { 
    private List<CollectionValue> AllValues { get; set; } 
    public List<CollectionValue> GetById(List<int> ids) { 
     return AllValues.Where(v => ids.Contains(v.Id)); 
    } 
} 

Verilen alay nesne için kullanılacak CollectionValues ​​bir test listesi, nasıl birini yapar Mevcut kimlikleri ve mevcut olmayan kimlikleri birleştiren çağrılar da dahil olmak üzere, KoleksiyonValues ​​listesindeki kimliklerin olası tüm izinlerini ele alacak bir beklenti oluşturmaktan nasıl vazgeçersiniz? Benim sorunum, tek bir çağrıda tüm olası beklentileri kurma arzusundan geliyor; Orijinal parametreye erişim mümkün değilse, her seferinde belirli bir aramada test etmek istediğim tam beklentiyi kolayca kurabilirim.

Burada yapmayı umduğum şey, "???" moq quickstart rehber itibaren

CollectionMock.Expect(c => c.GetById(It.IsAny<List<int>>())).Returns(???); 

cevap

61

:

// access invocation arguments when returning a value 
mock.Setup(x => x.Execute(It.IsAny<string>())) 
       .Returns((string s) => s.ToLower()); 

anlaşılacağı o (It.IsAny kısıtlama nitelikli bir) GetById derdik parametreye erişmek için kullanışlı olacağını temsil nerede bu nedenle sizin için doldurabilirsiniz ??? gibi:

CollectionMock.Expect(c => c.GetById(It.IsAny<List<int>>())) 
       .Returns((List<int> l) => //Do some stuff with l 
        );