CallBase = true;
var mock = new Mock<IFoo> { CallBase = true };
의 개념을 이해할 수 MOQ하는 새로운 아니다
안녕 팀에서 : 더 기대 구성원을 무시하지 않는 경우 기본 클래스 구현을 호출
하지만 CallBase = true를 사용하지 않고 기본 클래스 멤버를 모의 할 수있는 테스트 케이스가 있습니다.
// Creating Base class.
public abstract class Car
{
public virtual bool IsValidSpeed()
{
///complex logic
///returnig false just to compile code
return false;
}
}
// Creating child class
public class Ferrari : Car
{
public int Speed { get; set; }
public void PrintSpeed(int speed)
{
if (IsValidSpeed())
{
Speed = speed;
}
}
}
아래의 필기 테스트 케이스. 나는
public void MoqPracticeTest2()
{
// var mock = new Mock<Ferrari>() { CallBase = true };
var mock = new Mock<Ferrari>(MockBehavior.Strict);
//Mocking Base class function
mock.Setup(x=>x.IsValidSpeed()).Returns(true);
//calling function which will call base function
mock.Object.PrintSpeed(100);
//calling Verify on mock object
mock.Verify(x => x.IsValidSpeed(), Times.Once);
Assert.AreEqual(mock.Object.Speed,100); //Doing Assert
}
아직 테스트 위의 경우는 콜백 속성을 설정하지 않고 통과 내 모의 객체에 대한 진정한 속성 CallBase을 = 설정하고 있지 않다. 여기에서 CallBase = true
의 사용을 설명 해주십시오.
@chirstos 나는 var mock = new Mock을 사용했다.() {CallBase = true}; // var mock = new Mock (MockBehavior.Strict); 또한 내 테스트 케이스가 통과하고있다. 나는 최신 moq dll을 사용하고있다. –
이 문장도'mock.Setup (x => x.IsValidSpeed ())라고 가정한다. 그렇다면 기본 구현은 위와 같은 설정을 제공하지 않은 경우에만 호출되기 때문에 상당히 합리적인 것입니다. – Christos