2010-05-07 33 views
1

我是在.NET中使用模擬測試的新手。
我測試了金融交易是以下性質:
模擬對象屬性不變

int amt =20; 
//sets all the props and func and returns a FinaceAccount. 
//Note I did not SetUp the amt of the account. 
var account =GetFinanceAccount() 


//service layer to be tested 
_financeService.tranx(account,amt); 

//checks if the amt was added to the account.amt 
//here the amt comes out same as that set in GetFinanceAccount. 
Assert.AreEqual(account.amt ,amt) 

我知道tranx正常工作,但沒有與測試問題的功能。 是否有在淨

+0

你怎麼模擬?你用什麼框架? – driis 2010-05-07 22:35:17

+0

你在使用哪個框架?你可以包含模擬設置代碼嗎? – 2010-05-07 22:37:16

+0

我正在使用Moq.Mock進行嘲弄。模擬設置代碼如下: var financeAccount = new Mock financeAccount.SetupGet(x => x.Id).Returns(id); financeAccount.SetupGet(x => x.Name).Returns(「A」); financeAccount.Setup(x => x.Validate())。Returns(true); 有很多參數設置,但在GetFinanceAccount()設置方法中未設置amt屬性
frictionlesspulley 2010-05-07 22:43:39

回答

2

出現這種情況是因爲嘲笑,當你這樣做SetupGet,你基本上是說:「當調用此屬性,總是返回此值」任何很好的參考材料。你想要做的可能是「SetupProperty」,它使得模擬對象上的所有屬性都像普通屬性一樣具有get/set行爲。

Mock<Account> mockAccount = new Mock<Account>(); 
    mockAccount.SetupProperty(mock => mock.amt); 
    // Perhaps set a initial value 
    mockAccount.Object.amt = 10; 
0

我建議你鉤住你的單元測試到Visual Studio去屬性,選擇調試然後單擊啓動外部程序,並選擇nunit.exe然後在參數的調試添加地圖的完整路徑的dll你的測試項目。這將使您能夠調試您的測試並逐步完成所有測試。現在你可以看到發生了什麼問題。