c#赋值后值仍然为空

我不知道我做错了什么,我正在处理现有的应用程序,并且正在为此方法创建单元测试。

在测试方法上,我模拟了视图并在项目上分配了一个值

_fakeView.Setup(x => x.Bag.Amount).Returns((decimal)300.32);

(注意金额是字符串)

我将视图对象传递给演示者并初始化

_presenter = new Presenter(_fakeView.Object);
_presenter.InitializeForm();

在现有的初始化代码上,他们有一行代码来重新分配这样的值:

this._view.Amount = this._view.Bag.Amount.ToString();

当这条线运行时,即使 this._view.Bag.Amount.ToString() 有值, this._view.Amount 仍然为空。

我什至尝试直接设置它

this._view.Amount = "asdfgsdf"; but still null

请帮忙


小怪兽爱吃肉
浏览 550回答 2
2回答

智慧大石

仅仅因为您为某物赋值,并不意味着它不能是null。this._view.Bag.Amount.ToString()必须返回空值。这意味着,要么this._view是空,this._view.Bag是null,或者this._view.Bag.Amount是null,或者ToString()由于某种原因失败。您必须检查这些值并找出它的null来源。另外,如果Amount是string你为什么使用ToString()?编辑:它的代码可能Amount是这样的:// Get works as expected but set does literally nothing to change the backing fieldprivate string amount = null;public string Amount{    get => amount;    set     {         // Do literally nothing    }}或者:// Get will always return null, but set works as expectedprviate string amount;public string Amount{    get => null;    set => amount == value;}在这两个示例中,如果您仅尝试使用/ ,Amount则将始终返回。nullsetget有没有SetAmount(string amount)可以调用的方法?
打开App,查看更多内容
随时随地看视频慕课网APP