私はUnit TestingとMoqを初めて使うので、私の方法や理解が完全に間違っていたら、私を助けてください。Moqの設定でnullが発生する
私はロジックメソッドをテストしています。私はロジックをコメントアウトしましたが、それは「モデル」内のいくつかの値をチェックし、問題がある場合はそれを返します。私たちが見ている場合、問題はありません。 NUnitのとMOQを、使用して
public ReplyDto SaveSettings(SnowballDto model)
{
// Some logic here that reads from the model.
var result = _data.SaveSettings(model);
return result;
}
私のテストでは、次のようになります。
各試験において、_logic = new SnowballLogic(mockSnowballData.Object, mockLog.Object);
mockSnowballData
.Setup(x => x.SaveSettings(SnowballDto_Good))
.Returns(new ReplyDto {
IsSuccess = true,
Message = "Saved",
ReplyKeyID = 1
});
が、私は私が使うことになるものを設定し、民間セットアップ関数を呼び出します。
private void SetupData()
{
SnowballDto_Good = new SnowballDto {
FirstPaymentDate = DateTime.UtcNow,
ID = 1,
OrderedIDPriority = new List<int>(),
SnowballTypeID = 1,
TargetPayment = 1000
};
DebtDtoList_ThreeDebt.Clear();
DebtDtoList_ThreeDebt.Add(new DebtDto { ID = 1, Description = "Debt 1", ManualSnowballPriority = 1, MinimumMonthlyPaymentAmount = 140, OpeningBalance = 5000, RunningData = new DebtRunningDto { Balance = 5000 }, OpeningDate = DateTime.UtcNow, SnowballID = 1, StandardRate = 10 });
DebtDtoList_ThreeDebt.Add(new DebtDto { ID = 2, Description = "Debt 2", ManualSnowballPriority = 2, MinimumMonthlyPaymentAmount = 90, OpeningBalance = 1600, RunningData = new DebtRunningDto { Balance = 1600 }, OpeningDate = DateTime.UtcNow, SnowballID = 1, StandardRate = 15 });
DebtDtoList_ThreeDebt.Add(new DebtDto { ID = 3, Description = "Debt 3", ManualSnowballPriority = 3, MinimumMonthlyPaymentAmount = 300, OpeningBalance = 9000, RunningData = new DebtRunningDto { Balance = 9000 }, OpeningDate = DateTime.UtcNow, SnowballID = 1, StandardRate = 20 });
}
だから、MOQの私の理解は、私は常に真IsSuccess =で新しいReplyDtoを返し、SaveSettings 『methidと呼ばれ、『SnowballDto_Good』オブジェクトが渡された「SnowballDataクラスのは、ときに』。言っていることです私は電話をかけるとき、そのため
、:
var result = _data.SaveSettings(model);
それは
しかし、私はブレークポイントを置くとき、真IsSuccess =とReplyDtoを返す必要があります私が 'SaveSettings'を呼び出すと、nullを常に返します。
私は私の設定を変更する場合:
.Setup(x => x.SaveSettings(It.IsAny<SnowballDto>()))
テストは合格。本当のSnowballDtoを与えると、なぜそれがnullを返すのですか?
これは参照する引数を比較しています –
セットアップで使用したのと同じオブジェクトを渡していますか? – Nkosi
はい、私は同じオブジェクトを渡しています。 – Craig