jsonGPPD
jsonGPPD

Reputation: 1037

Unit Testing xUnit Asserting 2 Collections with Moq Interface

Good day everyone,

I'm new in xunit and even in unit testing. I have a code here and I'm trying to assert two collection of list. But I have no idea how to assert and pass this test. Here's my code

    [Theory]
    [InlineData(1)]
    public void GetAllStudents_Exempt1(int number)
    {
        // arrange
        var studentRepo = new Mock<IStudentRepository>();
        var listOfStudents = new List<Student> { new Student { StudentId = 1, Firstname = "Firstname1", Lastname = "Firstname1" },
        new Student{StudentId=2, Firstname="Firstname2",Lastname="Lastname2"} };

        var getAllStudentDetailsExempt1 = studentRepo.Setup(s => s.GetStudents()).Returns(listOfStudents.Where(x => x.StudentId != number));

        var studentService = new StudentService(studentRepo.Object);

        // act
        var getStudentsDetails = studentService.ListOfStudentsExempt1(1);

        // assert
        // I don't have any idea how to assert
    }

Upvotes: 1

Views: 191

Answers (1)

Roelant M
Roelant M

Reputation: 1716

First a few notes:

var getAllStudentDetailsExempt1 = studentRepo
    .Setup(s => s.GetStudents())
    .Returns(listOfStudents.Where(x => x.StudentId != number));

you don't need var getAllStudentDetailsExempt1, you can just setup your repo-mock...

studentRepo
    .Setup(s => s.GetStudents())
    .Returns(listOfStudents.Where(x => x.StudentId != number));

You probably want to change:

// act
var getStudentsDetails = studentService.ListOfStudentsExempt1(1);

to use the number variable...

// act
var getStudentsDetails = studentService.ListOfStudentsExempt1(number);

So then you can assert by checking some properties:

Assert.Equals(1, getStudentsDetails.Count);
Assert.Equals("FirstName1", getStudentsDetails.First().Firstname);

etc. etc.

Give it a shot!

Upvotes: 1

Related Questions