我交會上發佈本就#moq討論組: http://groups.google.com/group/moqdisc/browse_thread/thread/569b75fd2cc1829d嘲諷裁判參數
嘿夥計,
我所遇到的問題帶有嘲諷裁判PARAM,我敢肯定 必須是顯而易見的,但是對於框架來說,我只是不能使用它而不是 。
我有以下方法庫:
public int SaveCard(int userId, CardPaymentMethodDto
cardPaymentMethodDto)
{
int? cardId = 0;
try
{
int result = this.dataContext.usp_PaymentMethod_Card_Insert(userId,
cardPaymentMethodDto.UserAccountReference,
cardPaymentMethodDto.EncryptedCardNumber,
cardPaymentMethodDto.BinRange,
cardPaymentMethodDto.LastFourDigits,
cardPaymentMethodDto.ExpiryMonth,
cardPaymentMethodDto.ExpiryYear,
cardPaymentMethodDto.IssueNumber,
cardPaymentMethodDto.IssuingBank,
cardPaymentMethodDto.IssuingCountry,
cardPaymentMethodDto.Scheme,
cardPaymentMethodDto.StartMonth,
cardPaymentMethodDto.StartYear,
cardPaymentMethodDto.BillingAddress.House,
cardPaymentMethodDto.BillingAddress.SubPremises,
cardPaymentMethodDto.BillingAddress.Street,
cardPaymentMethodDto.BillingAddress.Town,
cardPaymentMethodDto.BillingAddress.County,
cardPaymentMethodDto.BillingAddress.Postcode,
cardPaymentMethodDto.BillingAddress.Country,
cardPaymentMethodDto.DateRegistered,
ref cardId);
if (result <= 0)
{
CompanySystemSqlException tex = new
CompanySystemSqlException("Database communications error");
tex.Data.Add("UserId", userId);
tex.Data.Add("PaymentMethod", cardPaymentMethodDto.ToString());
Logger.LogException("SaveCard: result <= 0", tex);
throw tex;
}
}
catch (DbException ex)
{
CompanySystemSqlException tex = new
CompanySystemSqlException("Database communications error", ex);
tex.Data.Add("UserId", userId);
tex.Data.Add("PaymentMethod", cardPaymentMethodDto.ToString());
Logger.LogException("SaveCard: DbException", tex);
throw tex;
}
return cardId ?? 0;
}
一個單元測試我有是:
[Test]
public void SaveCard_ValidData_ShouldReturnValidCardId()
{
int cardId;
int? refCardId = 0;
dataContext.DefaultValue = DefaultValue.Mock;
dataContext.Setup(x =>
x.usp_PaymentMethod_Card_Insert(It.IsAny<int>(), It.IsAny<string>(),
It.IsAny<string>(), It.IsAny<string>(),
It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(),
It.IsAny<int>(), It.IsAny<string>(), It.IsAny<string>(),
It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(),
It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(),
It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(),
It.IsAny<string>(), It.IsAny<DateTime>(), ref refCardId)).Returns(1);
cardId = paymentRepository.SaveCard(1, new CardPaymentMethodDto
{ BillingAddress = new AddressDto { Country = "", County = "", House =
"", Postcode = "", Street = "", SubPremises = "", Town = ""},
BinRange = "", Cv2 = 123,
DateRegistered = DateTime.Now, EncryptedCardNumber =
"jumble",
ExpiryMonth = "02", ExpiryYear = "2030", Id = 1,
IssueNumber = 1, IssuingBank = "", IssuingCountry = "",
LastFourDigits = "", LastUsed = DateTime.MinValue, Scheme
= "", StartMonth = "", StartYear = "",
UserAccountReference = ""});
Assert.That(cardId, Is.EqualTo(1));
}
現在很明顯,我已經在單位創建裁判參數(refCardId) 測試,或者我無法設置預期的結果,但是refCardId <> 存儲庫cardId變量,所以它顯然失敗(第一個方法的結果從零開始)。
我確定我錯過了什麼,但是......什麼?
感謝您的幫助, 乾杯, 特里
在看看//計算器。 COM /問題/ 1068095 /分配出-REF參數功能於MOQ – Grzenio 2010-09-03 13:30:08