2009-07-01 13 views
7

Veri erişim nesnesine oldukça karmaşık bir çağrı yapan bir test nesnesine sahibim. BT ben nesnenin alay sürümüne sahip ve ben DoSomething == "deger1" ve someObject.porpertyA "değer2" == someString ile çağrıldım olduğunu test etmek istiyorum benim test yapısındaAssertWasRino alaylarında çağırma

object.DoSomething(somestring,someObject,someOtherObject,someOtherOtherObject)

şöyle görünür.

Basit AssertWasCalled() aşırı yükünü kullanamıyorum çünkü bazı (bazı şeyleri) hakkında bilmiyorum (ya da önemsemiyorum). Kurulum kısıtlamaları için bir eylem gerçekleştiren başka bir aşırı yükleme olduğunu fark ettim, ancak daha önce hiç kullanılmadığını gördüm.

cevap

18

Piece:

yourstub.AssertWasCalled(
      x => x.DoSomething(
       Arg<string>.Is.Equal("value1"), 
       Arg<someObjectType>.Is.Equal(value2), 
       Arg<someOtherObjectType>.Is.Anything, <======== NOTE THIS! 
       Arg<someOtherOtherObjectType>.Is.Equal(value3) 
      ) 
); 
+4

eser greaat Thaat. Yararlı bulduğum diğer tek şey, Arg .Matches (y => y.property == neyse) kullanmaktı; argüman nesnelerindeki değerleri kontrol etmek için. – captncraig

+0

Yup, bunun basitlik için, sadece göstermediğini biliyorum. Keyfini çıkarın! – zvolkov

4

documentation for constraints'a bakın.

İstediğin şüpheli: kek

Expect.Call(object.DoSomething(null, null, null, null) 
     .IgnoreArguments() // Ignore those nulls 
     .Constraints(Is.Equal("value1"), 
        Property.Value("PropertyA", "value2"), 
        Is.Anything(), 
        Is.Anything()) 
     .Return(whateverItShouldReturn);