Sunday, March 24, 2019

Moq Sample:

Class to be unit tested:

public class A
{
    B _objectB;
    C _objectC;

    public A(B objectB, C objectC)
    {
        _objectB = objectB;
        _objectC = objectC;
    }
    public virtual int Operation(int number1, int number2)
    {
        int result = 0;

        result += _objectB.Multiply(number1, number2);
        result += _objectC.Divide(number1, number2);

        return result;
    }
}

Unit testing with mocking:

using Moq;
using Xunit;

public class ATest
{
    [Fact]
    public void Operation_MockDependencies_ShouldPass()
    {
        //Arrange
        Mock mockB = new Mock();
        Mock mockC = new Mock();
        var sut = new A(mockB.Object, mockC.Object);
        int number1 = 10;
        int number2 = 5;

        mockB.Setup(x => x.Multiply(number1, number2)).Returns(10);
        mockC.Setup(x => x.Divide(number1, number2)).Returns(25);

        //Act
        var result = sut.Operation(number1, number2);

        //Assert
        Assert.Equal(35, result);
    }
}

No comments: