1
public class MyClass: AbstractBase
{
public override bool Init(IAppContext contextIn)
{
if (base.Init(contextIn))
{
//my code
}
}
}
위와 같은 클래스가 있고 Init 메서드에 대한 단위 테스트를 작성하고 IAppContext
을 조롱했습니다. mock을 사용하여 기본 호출을 무시할 수 있습니까? Moq 기본 호출을 우회하는 방법
이
내가 뭐하는 거지입니다 :Mock<IAppContext> mockContex = new Mock<IAppContext >();
MyClass myClassInstance - new MyClass();
myClassInstance.Init(mockContex.object);
을 등 base.init
보인다 :
public virtual bool Init(IAppContext context_in)
{
if (context_in == null)
{
throw new ArgumentNullException("context_in", "IAppContext argument s null");
}
this.myCommunication = context_in.getInterface<ICommunication>();
if (this.myCommunication == null)
{
throw new ArgumentNullException("myCommunication", "ICommunication argument is null");
}
this.myStateManager = new IStateManager(this.myCommunication);
if (this.myStateManager == null)
{
throw new InvalidOperationException("Could not create the State Manager");
}
return true;
}
Moq로 기본 호출을 바이 패스 할 수 없습니다. 당신이 할 수있는 것은'base.Init (contextIn)'이 true를 리턴하는 방식으로'mockContex'를 설정하는 것입니다. 당신은'base.Init'이 어떻게 생겼는지 게시 할 수 있습니까? – nemesv
public 가상 BOOL 초기화 (IAppContext의 context_in) {경우 (context_in == NULL) { 스로인 경우 ArgumentNullException 새로운 ("context_in"(널 IAppContext 인수 S ');} this.myCommunication = context_in.getInterface(); 경우 (this.myCommunication == NULL) { 스로인 경우 ArgumentNullException 새로운 ("myCommunication", "ICommunication 인수가 null");} this.myStateManager = 새로운있는 IStateManager (this.myCommunication) 경우 (this.myStateManager == null) { throw new InvalidOperationException ("상태 관리자를 만들지 못했습니다."); } return true; } } –