yaptığı gibi çalıştır denir doğrulamak için mantıklı Sen olabilir testi Moq gibi bu kullanarak alaycı çerçevesi:
public interface ITest
{
void Run();
}
public class Test : ITest
{
void ITest.Run() => Run();
public virtual int Run()
{
return 1; // doesn’t matter, will be replaced by our mock
}
}
Test sonra bu şekilde görünecektir: ITest.Run
Test
ait Run
çağırmaz zaman
// arrange
Mock<Test> mock = new Mock<Test>();
mock.CallBase = true;
mock.Setup(t => t.Run()).Returns(1);
// act
ITest test = mock.Object;
test.Run();
// assert
mock.Verify(t => t.Run(), Times.Once());
Bu doğru atar. Bununla birlikte, görebildiğiniz gibi, bunu yapmak, sanal aygıtın sanal olması için Run
yöntemini gerektirir, böylece alay kendi uygulamasıyla üzerine yazabilir. Bu arzu edilmeyebilir.
Ve sonuç olarak, bu sınama hiçbir anlam ifade etmemektedir. Birim bir şey sınandığında, birim değil, uygulama için davranışını test etmek istersiniz. Bu nedenle, ITest.Run
açık uygulamasının nesne üzerinde başka bir yöntem çağırıp çağıramayacağını farketmemelisiniz. Sadece bu yöntemin çağrılmasının doğru olduğuna dikkat etmelisiniz.
"Çalıştır" dönüş değerini kullanabilir veya bir şey yazdırabilirsiniz, hata ayıklayabilirsiniz ... Bunu yapmak için birden fazla yol var ... – Ian
Ben mock.Verify (m) gibi bir şey yapmak istiyorum => m.Run(), Times.Once()); Ama bunu nasıl yapabileceğimi anlamıyorum. – Serg046
Bu, kullandığınız alay konusu Framework'e bağlıdır. Şu an kullanmakta olduğunuzu belirtin misiniz? –