没错,标题就说明了一切。
[TestMethod()]
void TestFunc()
{
string r = "Hello World"
var oMoq = new Mock<object>();
oMoq.setup(o => o.ToString()).Returns(r);
Assert.AreEqual(r, oMoq.Object.ToString());
}
使用 VS2012 (express) 附带的 Moq 框架和单元测试框架
忍者编辑,忘了包括问题......
有没有办法让这成为可能?
(我不完全确定上面的代码是否会编译,我的头顶是否无法访问 VS2012 atm)
更新
为了更清楚地了解我的情况:
我有一个对象列表
var myList = new List<MyObj>();
我向其中添加了两个 MyObj 模拟:
var oMoq = new Mock<MyObj>();
oMoq.setup(o => o.ToString()).Returns(r);
myList.Add(oMoq.Object);
myList.Add(oMoq.Object);
然后我用
string.Join(",", myList);
我希望生产的
你好世界,你好世界
但相反,它返回了
MyNamespace.MyObjMoqThingProxy,MyNamespace.MyObjMoqThingProxy
更新
使用
var o = new Mock<object>();
o.Setup(x => x.ToString()).Returns("Hello World");
Assert.AreEqual("Hello World", o.Object.ToString());
产量Castle.Proxies.ObjectProxy
public class Test
{
override public string ToString()
{
return "myTClass";
}
}
/* snip */
var o = new Mock<Test>();
o.Setup(x => x.ToString()).Returns("Hello World");
Assert.AreEqual("Hello World", o.Object.ToString());
产量Hello World
所以,回答我的第一个问题。如果该类尚未在某些地方覆盖 ToString,则猜想您无法模拟对象 ToString() 方法。然后它(起订量)将使用自己的内部 ToString() 方法。臭虫。