У меня вопрос по модульному тесту, если быть точным с Mockito.Я создал архитектурный шаблон MVC, и я должен проверить свой контроллер, который работает с консолью ввода формы.В моем тесте я написал имитацию ввода с консоли, но учитель сказал, что я не должен использовать некоторые классы там.
У меня есть Student.class, который является моей моделью.Этот класс имеет такие методы, как -> setId, setName, setSubjects, getId, getName и getSubjects, а также метод toString ().
Это мой вид:
public class View {
private Student student;
private DiplomaStudent diplomaStudent;
public View() {
this.student = new Student();
this.diplomaStudent = new DiplomaStudent();
}
public void inoutStudent() {
System.out.println("Enter id: ");
Scanner input = new Scanner(System.in);
Integer id = input.nextInt();
student.setId(id);
System.out.println("Enter name: ");
Scanner inputName = new Scanner(System.in);
String name = inputName.nextLine();
student.setStudentName(name);
System.out.println("Enter course");
Scanner inputCourse = new Scanner(System.in);
Integer course = inputCourse.nextInt();
student.setCourse(course);
System.out.println(student.getId() + " " + student.getStudentName() + " " + student.getCourse());
}
public String inputing() {
System.out.println("Enter name: ");
Scanner inputName = new Scanner(System.in);
String name = inputName.nextLine();
return name;
}
}
Это мой контроллер:
public class Controller {
private Student student;
private DiplomaStudent diplomaStudent;
private View view;
public Controller() {
this.student = new Student();
this.diplomaStudent = new DiplomaStudent();
this.view = new View();
}
public void startStud() {
view.inoutStudent();
}
public String inpt() {
return view.inputing();
}
}
В моем тесте я делал имитацию, как здесь, с View.class
@Test
@DisplayName("test immitation from console input")
public void testView(){
View view = new View();
String inputName = "Jhon";
InputStream in = new ByteArrayInputStream(inputName.getBytes());
System.setIn(in);
assertEquals("Jhon", view.inputing());
}
Но я должен написать то же самое для контроллера
@Test
public void testController() {
Controller controller = mock(Controller.class);
/*String inputName = "Jhon";
InputStream in = new ByteArrayInputStream(inputName.getBytes());
System.setIn(in);*/
//what i should write here
assertEquals("Jhon", controller.inpt());
}
Итак, что я должен написать для моего теста контроллера, пожалуйста, помогите мне.