2011-08-10 18 views
38

RhinoMocks'ı iyi bir süredir kullanıyorum ama Moq'a bakmaya başladım. Bu çok temel problemim var ve bu kutunun hemen dışında uçmadığı beni şaşırtıyor. Makale alay-alaycılarını yapıcıya geçirme

public class Foo 
{ 
    private IBar _bar; 
    public Foo(IBar bar) 
    { 
     _bar = bar; 
    } 
    .. 
} 

Şimdi ben Foo göndermek İbar Mock gereken bir test var: Ben aşağıdaki sınıf tanımı var varsayalım. RhinoMocks yılında şu gibi ben bunu yapmak sadece ediyorum, ve sadece büyük çalışacak:

var mock = MockRepository.GenerateMock<IBar>(); 
var foo = new Foo(mock); 

Ancak, Adedi bu aynı şekilde çalışmak için görünmüyor.

var mock = new Mock<IBar>(); 
var foo = new Foo(mock); 

Ancak şimdi başarısız, - Ben yanlış yapıyorum 'İbar' için 'Moq.Mock' dan dönüştürülemez" bana bunu yapmanın tavsiye edilen yolu nedir şu şekildedir: Ben yapıyorum.? MOQ ile?

cevap

67

Sen de örneğinin yöntemlerine erişmek için sahte nesneyi kullanabilirsiniz sahte

var mock = new Mock<IBar>(); 
var foo = new Foo(mock.Object); 

amacı örneğine geçmesine gerek.

mock.Object.GetFoo(); 
Kabul biri olacak cevap arkasında sadece 10 saniye olduğu için
var mock = new Mock<IBar>().Object 
14
. Teşekkürler!
+0
+2

Normalde, nesne örneğini belirli bir davranış için atama ayarlamak isteyebileceğiniz gibi böyle bir değişkene atamam. – skyfoot

+0

sadece göstermek zorundaydı. Çalışma zamanı hatası için çözüm olan :-) çıktı. –