.net 模拟对象属性不变

.net 模拟对象属性不变,.net,mocking,.net,Mocking,我不熟悉在.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,a

我不熟悉在.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工作正常,但测试中存在问题。
在.Net中是否有关于模拟的好参考资料发生这种情况是因为,当您执行SetupGet时,实际上是在说“调用此属性时,始终返回此值”。您要做的可能是“SetupProperty”,它使模拟对象上的所有属性都像具有get/set行为的普通属性一样工作

  Mock<Account> mockAccount = new Mock<Account>();
  mockAccount.SetupProperty(mock => mock.amt);
  // Perhaps set a initial value
  mockAccount.Object.amt = 10;
Mock mockAccount=new Mock();
mockAccount.SetupProperty(mock=>mock.amt);
//也许设定一个初始值
mockAccount.Object.amt=10;

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

你怎么嘲笑?你用的是什么框架?你用的是什么框架?你能包括模拟设置代码吗?我使用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属性