Я довольно новичок в Nsubstitute и модульном тестировании. Я знаю, что в модульном тестировании вам не нужны никакие другие зависимости. Поэтому для того, чтобы это правило применялось, мы издеваемся над единицами.Nsubstitute: Издевательский объект Параметр для модульного тестирования
У меня есть этот пример для тестирования кода, где метод имеет параметр объекта:
class dependency {
public int A;
public dependency() {
// algorithms going on ...
A = algorithm_output;
}
}
class toTest {
public int Xa;
public void Foo(dependency dep_input){
Xa = dep_input.A;
// Xa will be used in an algorithm ...
}
}
Я думал насмешливый конструктор, но я не мог понять, как в Nsubstitute. Так, в конечном счете, как бы я это испытал?
Вы можете только обманывать интерфейсы и виртуальные методы с помощью NSubstitute. Конструкторы - это не-go, а также не виртуальные или статические методы. Возможно, вам следует добавить интерфейс к вашему классу? –
Скорее всего, интерфейс - это то, что вы хотите использовать в любом случае, если вы хотите проверить это. Если у вас все еще есть зависимость от фактического класса, вы, вероятно, все еще будете запускать код в этом классе, который может повлиять на ваши тесты, и вам, возможно, придется наброситься на определенное поведение в этом классе, чтобы оно соответствовало вашему тесту , –
Что делать, если я не могу изменить проверяемый код (по какой-то причине в проекте, над которым я работаю)? @ LasseV.Karlsen –