Я новичок в тестировании модулей. Тестирование устройств выполняется ниже. Я ожидаю, что они потерпят неудачу, потому что Student.getCourse, unidergraduate.getCourse1 и postgraduate.getcourse1 возвращают разные значения тому, что тестируется, например. «Студенческий курс» <> «Студенческий курс 1».NUnit говорит, что тест прошел успешно
Imports NUnit.Framework
Imports NMock
Imports StudentCL
Namespace Test
<TestFixture()>
Public Class StudentTest
Private _mocks As MockFactory
Private _StudentMock As Mock(Of Student)
Private _GraduateMock As Mock(Of Graduate)
Private _UndergraduateMock As Mock(Of UnderGraduate)
<SetUp()>
Public Sub SetUp()
_mocks = New MockFactory()
_StudentMock = _mocks.CreateMock(Of Student)()
_GraduateMock = _mocks.CreateMock(Of Graduate)()
_UndergraduateMock = _mocks.CreateMock(Of UnderGraduate)()
End Sub
<Test()>
Public Sub getStudentCourse()
_StudentMock.Expects.One.Method(Function(x) x.getCourse1).WillReturn("Student Course1")
End Sub
<Test()>
Public Sub getGraduateCourse()
_GraduateMock.Expects.One.Method(Function(x) x.getCourse1).WillReturn("Graduate Course1")
End Sub
<Test()>
Public Sub getUndergraduateCourse()
_UndergraduateMock.Expects.One.Method(Function(x) x.getCourse1).WillReturn("Undergraduate Course1")
End Sub
End Class
End Namespace
Public MustInherit Class Student
Public Overridable Function getCourse1() As String
Return "Student course"
End Function
End Class
Public Class Graduate
Inherits Student
Public Overrides Function getCourse1() As String
Return "Graduate course"
End Function
End Class
Public Class UnderGraduate
Inherits Student
Public Overrides Function getCourse1() As String
Return "Undergraduate course"
End Function
End Class
Что мне не хватает?
Спасибо +1. Не проверяет ли следующая строка, если Subgraduate.getCourse1 возвращает: «Бакалавриат Course1»: _UndergraduateMock.Expects.One.Method (Function (x) x.getCourse1) .WillReturn («Бакалавриат 1») – w0051977
Это применимо только в том случае, если макет используется. Макет никогда не используется, поэтому условие никогда не проверялось. Кроме того, макет не является фактическим экземпляром вашего класса. Ваш код не тестирует ваш класс, он просто создает фальшивую версию вашего класса и говорит, что если вызывается x.getCource1, верните «Undergraduate Cource1». Макет должен быть проверен в конце теста, чтобы проверить состояние «Ожидание.Один». В вашем случае нет необходимости в издевательствах. –
Спасибо. Для чего используется Expects.one.method? Я не могу найти какой-либо справочный материал. – w0051977