Модульный тест с Moq - PullRequest
       2

Модульный тест с Moq

1 голос
/ 09 ноября 2011

Я использую Moq для модульного тестирования и пытаюсь написать свой первый модульный тест.Мои уровни - «Контроллер => Сервис => Репозиторий».

(я использую шаблон единства и репозитория.)

Когда я запускаю свой модульный тест, фактическое значение всегда равно 0как _service.GetEquipStates().Count() = 0.Я не знаю, где я делаю неправильно.Пожалуйста, предложите.

Код моего модульного теста следующий:

private ITestService _service;
private Mock<ITestRepository> RepositoryMoc; 

[TestInitialize]
public void Initialize() { 
    RepositoryMoc= new Mock<ITestRepository>(); 
    _service = new TestService(RepositoryMoc.Object) 
}
[TestMethod]
public void GetEquipmentState() {   
    var stateList = new[] { new State { ID = 1, Desc= "test" } };         
    RepositoryMoc.Setup(es => es.GetStates(true)).Returns(stateList );     
    Assert.AreEqual(1, _service.GetStates().Count());           
}

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Я скопировал ваш код в одно из моих решений, и тест прошел успешно

    private Mock<IAccessor> RepositoryMoc;
    private Controller _service;

    [TestMethod]
    public void TestMethod()
    {
        // Arrange
        _service = new Controller();
        RepositoryMoc = new Mock<IAccessor>();

        _service.Accessor = RepositoryMoc.Object;

        var stateList = new[] { new State { ID = 1, Desc = "test" } };
        RepositoryMoc.Setup(es => es.GetStates(true)).Returns(stateList);

        // Act & Assert
        Assert.AreEqual(1, _service.GetStates().Count());           
    }

Код точно такой же, как в вашем решении?

1 голос
/ 09 ноября 2011

Ваша настройка выполнена для метода GetState с параметром true.

RepositoryMoc.Setup(es => es.GetStates(true)).Returns(stateList);

Но ваш вызов в операторе Assert для метода GetState без параметра. Метод GetState объявлен с параметром по умолчанию или у вас есть функции (одна с параметром bool, другая без)?

Просто сделайте ваш вызов в утверждении assert, как это, и оно должно работать.

Assert.AreEqual(1, _service.GetStates(true).Count());           
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...