そうですね、タイトルがすべてを物語っています。
[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 に同梱されている Moq フレームワークと単体テスト フレームワークの使用 (エクスプレス)
忍者編集、質問を含めるのを忘れていました...
これを可能にする方法はありますか?
(上記のコードがまったくコンパイルされるかどうかは完全にはわかりません.VS2012 atmにアクセスできない頭のてっぺんでしたか)
更新
私のケースについてより明確にするために:
オブジェクトのリストがありました
var myList = new List<MyObj>();
2 つの 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() メソッドをモックできないと思います。それ(Moq)は、独自の内部 ToString() メソッドを使用します。バガー。