Чем больше я читаю ложный пример, тем больше я запутываюсь ...
У меня есть метод classA eat (), который вызывает класс FatDude eatThemAll ()
public class classA {
FatDude dude = new FatDude();
public String eat() {
String result = dude.eatThemAll();
}
}
public class FatDude {
public String eatThemAll() {
return "never full";
}
}
Теперь я хочудля проверки метода класса eatA), насмехаясь над классом FatDude.
public class MockFatDude extends FatDude {
//override
public String eatThemAll() {
return "very full";
}
}
------------- test --------------
public class DoTest {
public void runTest() {
classA cl = new ClassA();
String out = cl.eat();
assertEqual(out, "very full");
}
}
Этот DoTest runTest (), конечно, не будет использовать класс MockFatDude.Один из способов, которым я могу воспользоваться, - это изменить код так, чтобы он передавал метод FatDude для eat () класса Class, например:
public class classA {
public String eat(FatDude dude) {
String result = dude.eatThemAll();
}
}
Затем измените мой метод тестирования на:
public class DoTest {
public void runTest() {
classA cl = new ClassA();
String out = cl.eat(new MockFatDude());
assertEqual(out, "very full");
}
}
видите, я должен был изменить исходный код для удовлетворения моих потребностей.Это правильный способ сделать?Что если мне не разрешено менять исходный код?Я знаю, что если я применю концепцию TDD, то можно изменить исходный код, но я хотел бы услышать мнение или совет, если то, что я показал выше, является правильным способом.