2
我是使用Moq的新手,我找不到這樣做的方法。 我有一個generateId私有方法,稱爲Moq代理單元測試
/// <summary>
/// Generates a call Id for external interfaces
/// </summary>
/// <returns></returns>
private string GenerateCallId()
{
return "EX" + SharedServicesClientProxy.Instance.GenerateId().ToString();
}
我想單元測試這種方法,因爲這個原因,我需要模擬代理。 SharedServicesClientProxy只是一個實現接口ISharedServices但添加單例的對象。我想測試所有的字符串是否正確地返回了一個以「EX」開頭的字符串。這是我的單元測試,使用Moq
/// <summary>
/// A test for GenerateCallId
/// A CallId for external systems should always start by "EX"
///</summary>
[TestMethod()]
[DeploymentItem("myDll.dll")]
public void GenerateCallIdTest()
{
myService_Accessor target = new myService_Accessor();
var SharedServicesClientProxy = new Mock<ISharedServices>();
SharedServicesClientProxy.Setup(x => x.GenerateId()).Returns(5396760556432785286);
string actual;
string extCallIdPrefix = "EX";
actual = target.GenerateCallId();
Assert.IsTrue(actual.StartsWith(extCallIdPrefix));
}
我想我在錯誤的地方做我的模擬?
以更一般的方式,我如何模擬一個將被我測試的方法調用的對象? 爲如:
/// <summary>
/// dummy test
///</summary>
[TestMethod()]
[DeploymentItem("myDll.dll")]
public void Foo()
{
myService_Accessor target = new myService_Accessor();
boolexpected = false;
actual = target.Foo();
Assert.IsTrue(actual,expected);
}
/// <summary>
/// Foo
/// </summary>
/// <returns></returns>
private bool Foo()
{
return this.Bar();
}
我需要MOQ酒吧,但如果我需要做的呢? 謝謝, Seb