我有一個類,它執行一些內容檢索,並且它有一個方法需要一些輸入(過濾器)才能檢索它。其中一個「輸入」調用另一個方法,基本上返回一個int,我如何使用MOQ來嘲笑它?這裏有一個例子:如何嘲笑返回一個int與MOQ的方法
namespace MyNamespace
{
public class ConfigMetaDataColumns : MyModel
{
public int FieldID { get { return ValueInt("FieldID"); } }
public int OrderId { get { return ValueInt("OrderId"); } }
public string Label { get { return ValueString("Label"); } }
public string FieldName { get { return ValueString("FieldName"); } }
public int IsReadOnly { get { return ValueInt("IsReadOnly"); } }
}
public class GetDataClass
{
protected OpenSQLAccessLayer m_WITObject;
// Input Properties
public string GroupID;
public string PageName;
// Output Properties
/// <summary>
/// Get Config meta data
/// </summary>
/// <returns></returns>
public IEnumerable<ConfigMetaDataColumns> GetConfigMetaData()
{
var requester = new ListRequester<OpenSQL, ConfigMetaDataColumns>(m_WITObject, "Result[0].RowCount", "Result[0].Row[{0}].");
return requester.Items;
}
public void InitRequest()
{
User user = (User)HttpContext.Current.User;
m_WITObject = user.NewService<OpenSQLAccessLayer>();
m_WITObject.SetInput("MultipleResultSets", 1);
m_WITObject.SetInput("ClientID", Utils.GetClientID());
m_WITObject.SetInput("GroupID", GroupID);
m_WITObject.SetInput("PageName", PageName);
m_WITObject.Retrieve();
}
}
}
這是「GetClientID()」方法:
public static int GetClientID()
{
User oUser = (User)HttpContext.Current.User;
int nClientID;
string sClientID = string.Empty;
if (String.IsNullOrEmpty(oUser.Session("clientid")))
{
Client oClient = new Client();
}
oUser = (User)HttpContext.Current.User;
sClientID = oUser.Session("clientid");
//If we couldn't retrieve it, throw exception
if (string.IsNullOrEmpty(sClientID) || !int.TryParse(sClientID, out nClientID))
{
throw new Exception("No clientid found in user session, client not authenticated, please login from main page");
}
return nClientID;
}
我只是在尋找一種方式,讓我在一個硬編碼值傳遞的客戶端ID,並使用它對GetDataClass類進行一些單元測試。
謝謝。
沒有回答你的問題,因爲克勞斯比斯科夫已經做了很好的工作。但我想說,而不是一個「Util」類,我喜歡使用一個AppContext類(它實現IAppContext,這與klausbyskov的答案中的IUtil相同)。這存儲了有關應用程序當前上下文的信息,例如當前用戶,當前客戶端或您在整個應用程序中可能需要知道的其他活動配置。這當然是個人偏好,但我認爲AppContext類的意圖比另一個名爲「Utils」的類更清晰。 – NerdFury 2010-10-18 19:56:24
感謝您的建議,不幸的是,這些課程來自不同的團隊,也是我無法改變的「核心」庫的一部分!我只是從它繼承而來。 – Saxman 2010-10-18 21:40:30