我一直在爲一個只能接收和返回字符串的COM對象進行封裝。對於COM對象的接口看起來是這樣的:嘲笑COM對象
interface IMapinfo
{
void Do(string cmd);
string Eval(string cmd);
}
現在我已經取得類,包基本功能,像這樣:
public class Table
{
IMapinfo MI;
public string Name
{
//pass the command to the COM object and get back the name.
get{return MI.Eval("TableInfo(1,1")");}
}
}
現在我想這樣做這些類的單元測試,而無需每次創建真正的COM對象,建立世界然後運行測試。所以我一直在研究使用模擬對象,但我對如何在這種情況下使用嘲諷有點困惑。
我打算用起訂量,所以我寫了這個實驗是這樣的:
[Test]
public void MockMapinfo()
{
Moq.Mock<Table> MockTable = new Moq.Mock<Table>();
MockTable.ExpectGet(n => n.Name)
.Returns("Water_Mains");
Table table = MockTable.Object;
var tablename = table.Name;
Assert.AreEqual("Water_Mains", tablename,string.Format("tablename is {0}",tablename));
Table d = new Table();
}
這是嘲笑我的COM對象的正確方法?這個字符串發送到eval函數的真實性如何?還是我這樣做都錯了?
什麼與反對票? – 2008-12-08 13:35:01