2017-11-15 3 views
1

Guten Tag alle,Unit Testing xUnit Asserting 2 Collections mit Moq-Schnittstelle

Ich bin neu in xunit und sogar in Komponententests. Ich habe einen Code hier und ich versuche, zwei Sammlung von Liste zu behaupten. Aber ich habe keine Ahnung, wie ich diesen Test durchsetzen und bestehen kann. Hier ist mein 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 
    } 

Antwort

1

Zuerst ein paar Hinweise:

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

Sie nicht var getAllStudentDetailsExempt1 benötigen, können Sie einfach Ihre Setup-Repo-Mock ...

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

Sie wollen wahrscheinlich zu ändern:

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

t o Verwenden Sie die number Variable ...

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

So können Sie durch Überprüfung einige Eigenschaften behaupten:

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

etc. etc.

Geben Sie ihm einen Schuss!