我有一個包含所有命令(方法)的類CommandExecutor。我必須測試一個從給定2個參數產生報告的方法。方法使用數據庫來檢查它是否產生。在同一類C中模擬屬性和調用方法#
EDIT 1:
屬性:
public IEngine Engine { get; set; }
IEngine接口:
ICommandExecutor CommandExecutor { get; }
IInputReader InputReader { get; }
IOutputWriter OutputWriter { get; }
IDatabase Database { get; }
CommandExecutor有一個方法執行。我有創建ICommand的其他類(命令工廠)。例如,引擎從文件中讀取輸入,檢查它是否有效,拆分參數等,並創建一個ICommand。然後CommandExecutor使用此ICommand並調用方法Execute。方法執行有開關情況,如果成功或者如果命令不成功,則每個情況都會返回一個字符串,它將引發一個exepction。我想單元測試一個依賴於數據庫的方法。我可以嘲笑這個屬性引擎(在CommandExecutor中)並調用一個方法來檢查它是否正常工作?在CommandExecutor每一個方法調用this.Engine.Database .....
發動機的構造:
public Engine(
IInputReader reader,
IOutputWriter writer,
ICommandExecutor commandExecutor,
IDatabase database)
{
this.InputReader = reader;
this.OutputWriter = writer;
this.CommandExecutor = commandExecutor;
this.CommandExecutor.Engine = this;
this.Database = database;
}
var reportFound = this.Engine.Database.GetReport(name, model);
if (reportFound != null)
{
throw new DuplicateEntryException(Constants.Duplicate);
}
Do something......
return string.Format(Constants.Test, model, name);
我嘲笑數據庫(此方法GetReport太),發動機,其工作與嘲笑的數據庫。如何模擬CommandExecutor引擎屬性並調用我想測試的方法?
謝謝
'''CommandExecutor引擎屬性''看起來像什麼?這個類的CommandExecutor'''如何看起來像?請詳細說明。 – dee