私は Moq を理解しようとすることができ、それはどのように機能しますか? いつ setup メソッドを使用する必要がありますか? 私の意見では、そのドキュメントはあまりにも貧弱です.とにかく. コードとやりたいことを共有したいと思います。
テスト中のクラス。
public interface IProduct
{
bool GiveCard();
float CalculateDiscount(decimal price, decimal discount);
}
public class Product : IProduct
{
private IProduct _product;
public string ProductName { get; set; }
public int StockCount { get; set; }
public float Discount { get; set; }
public float Price { get; set; }
public float CalculateDiscount(decimal price, decimal discount)
{
var discountedPrice = (price * discount) / 100;
Discount = price - discountedPrice;
return price - discountedPrice;
}
public bool GiveCard()
{
return CalculateDiscount(Price, Discount) > 300;
}
}
**ユニットテストクラス*
[Test]
public void GiveCard_DiscountedAmountGreaterThanOrEqual300_ReturnTrue()
{
var mockObject = new Mock<IProduct>();
var productService = new Product(mockObject.Object);
mockObject.Setup(x => x.CalculateDiscount(450, 20)).Returns(360);
var result = productService.GiveCard();
Console.WriteLine(result);
}
CalculateDiscount() メソッドで割引プロパティに計算結果を設定したのに、Result が 0 になってしまいます。