模拟对象属性不变

时间:2010-05-07 22:33:25

标签: .net mocking

我不熟悉在.Net中使用Mock测试 我正在测试具有以下性质的金融交易:

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正常工作,但测试存在问题。 关于.Net中的Mocking是否有任何好的参考资料

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

我建议您将单元测试连接到visual studio转到属性并选择debug然后单击启动外部程序并选择nunit.exe然后在参数中添加测试项目调试映射中dll的完整路径。这将使您能够调试测试并逐步完成所有操作。现在你可以看到出了什么问题。

相关问题