我要测试的是调用三个私有方法Foo
,boo1
,boo2
的方法boo3
确实按照此确切顺序进行调用(这是一个简化实际情况。
要测试我计划使用InSequence
对象的Mock
方法的顺序。
要测试我打算使用PrivateObject
类的私有方法。
我不知道如何将两者结合起来。这是到目前为止我尝试过的,但是似乎没有用!
public class TestedClass
{
private void _boo1(object someParam)
{
//some logic
}
private void _boo2(object someParam)
{
//some logic
}
private void _boo3(object someParam)
{
//some logic
}
public void Foo(object someParam)
{
_boo1(someParam);
_boo2(someParam);
_boo3(someParam);
}
}
这里是我到目前为止创建的测试方法:
[TestMethod]
public void TestSequence()
{
var sequence = new MockSequence();
var mockedObject = new Mock<TestedClass>();
PrivateObject obj = new PrivateObject(mockedObject);
mockedObject.Object.Foo(It.IsAny<Object>());
mockedObject.InSequence(sequence).Setup(x => obj.Invoke("_boo1", BindingFlags.Default, It.IsAny<Object>()));
mockedObject.InSequence(sequence).Setup(x => obj.Invoke("_boo2", BindingFlags.Default, It.IsAny<Object>()));
mockedObject.InSequence(sequence).Setup(x => obj.Invoke("_boo3", BindingFlags.Default, It.IsAny<Object>()));
}
任何帮助将不胜感激。
答案 0 :(得分:0)
为什么不使用System.IO将状态消息写入日志文件?您还可以使用System.Diagnostics来获取当前所在方法的名称:
string methodName = new StackTrace().GetFrame(0).GetMethod().Name