-2

私は 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 になってしまいます。

4

2 に答える 2

0
  mockObject.Setup(x => x.CalculateDiscount(It.IsAny<int>(), It.IsAny<int>())).Returns(360);
于 2018-08-28T12:37:25.410 に答える