C # birim testi ve Moq kullanmayı öğrenmek için oldukça yeniyim. Aşağıda test etmeye çalıştığım sınıf var.
class MyClass
{
SomeClass someClass;
public MyClass(SomeClass someClass)
{
this.someClass = someClass;
}
public void MyMethod(string method)
{
method = "test"
someClass.DoSomething(method);
}
}
class Someclass
{
public DoSomething(string method)
{
// do something...
}
}
Aşağıda benim TestClass'ım:
class MyClassTest
{
[TestMethod()]
public void MyMethodTest()
{
string action="test";
Mock<SomeClass> mockSomeClass = new Mock<SomeClass>();
mockSomeClass.SetUp(a => a.DoSomething(action));
MyClass myClass = new MyClass(mockSomeClass.Object);
myClass.MyMethod(action);
mockSomeClass.Verify(v => v.DoSomething(It.IsAny<string>()));
}
}
Aşağıdaki istisnayı alıyorum:
Expected invocation on the mock at least once, but was never performed
No setups configured.
No invocations performed..
Sadece "MyMethod" yönteminin çağrılıp çağrılmadığını doğrulamak istiyorum. Bir şey mi kaçırıyorum?
üzgünüm .. Sorumu düzenledim ..
—
user591410
Doğru yoldasınız, ancak yayınlanan kodda hatalar var. Derlenmeyecek - Someclass'a kasa, DoSomething'e geri dönüşü geçersiz kılar. Bundan sonra herkese açık erişime ihtiyacınız var, ardından DoSomething'i sanal hale getirin. Kısacası, muhtemelen üretim kodunuzda bir hata var.
—
TrueWill
Yanıtınız için teşekkürler. Sahte yöntemi ayarlarken argümanları yanlış ayarlıyordum ..
—
user591410
"Hiçbir kurulum yapılandırılmadı." Yanıltıcı olabilir. Çağrılacak yöntemler için bir davranış ayarlamanıza gerek yoktur. Ayrıca, test ettiğiniz yöntemin çağrılmasından SONRA "Doğrula" yöntemini uygulamayı unutmayın (bu durumda sizin durumunuzda bir sorun yoktur).
—
Sielu
SomeClass
Bir tanımı yoksa derlenmeyecektirMyMethod(string)
, öyle görünmemektedir.