Стыдно признаться, но юнит-тестирование для меня все еще ново. Я довольно твердо понимаю, как правильно обращаться с вещами. Но ситуация, которую мне трудно понять, заключается в написании модульного теста для метода, который просто возвращает результат вызова метода зависимости.
Я обнаружил, что он возникал несколько раз в ситуациях, когда вы внедряете уровень обслуживания для взаимодействия со своим уровнем DAL.
Тривиальный пример кода, вероятно, будет лучше описывать то, что я спрашиваю.
Примечание. В приведенном ниже примере кода используются c #, xUnit и Moq .
.
public class Foo {
Bar int;
Baz string;
}
public interface IFooRepository {
Foo GetByBar(bar int);
}
public interface IFooService {
Foo GetByBar(bar int);
}
public class FooService : IFooService {
private IFooRepository fooRepository;
public FooService(
IFooRepository fooRepository){
this.fooRepository = fooRepository;
}
public Foo GetByBar(bar int)
{
return fooRepository.GetByBar(bar);
}
}
[Fact]
public class FooServiceTests
{
public class GetByBarMethod
{
[Fact]
public void ShouldReturnBar()
{
//arrange
var expectedFoo = new Foo() { Bar = 1, Baz = "baz" };
var repo = new Mock<IFooRepository>();
repo.Setup(r => r.GetByBar(1)).Returns(expectedFoo);
var service = new FooService(repo.Object);
//act
var result = service.GetByBar(1);
//assert
Assert.Same(result, expectedFoo);
}
}
}
Я понимаю, что цель модульных тестов FooService
заключается в проверке логики внутри методов, а не логики зависимостей. Так есть ли смысл писать тест в этом случае, если он просто тестирует возвращаемое значение макетной зависимости?