Это все еще проверочный тест на макете? - PullRequest
2 голосов
/ 22 марта 2012

Как следует из названия на самом деле. WriteData будет вызываться для каждого разделенного CSV-элемента в DataIn. Я хочу определить, что WriteData был успешно вызван. Добавление обратного вызова и утверждение в списке - это все еще фиктивная проверка.

    [Test]
    public void DataIn_GoodRead_LoggedToFile()
    {
        Moq.Mock<IFileLogger> mock;
        MyLogic logic = SetupLogic(out mock);

        List<string> dataLogged = new List<string>();

        mock.Setup(x => x.WriteData(It.IsAny<string>()))
            .Callback(delegate(string s) { dataLogged.Add(s); });

        logic.DataIn(1, "1,2,3");

        Assert.AreEqual(3, dataLogged.Count);
    }

1 Ответ

5 голосов
/ 22 марта 2012

Не уверен, почему вы используете обратный вызов.Кажется, что

mock.Setup(x => x.WriteData(It.IsAny<string>())).Verifiable()

...

mock.Verify(x => x.WriteData(It.IsAny<string>()), Times.Exactly(3))

сделает то же самое.

И я думаю, что вы также можете избежать настройки и просто использовать строку проверки, чтобы у вас было только

mock.Verify(x => x.WriteData(It.IsAny<string>()), Times.Exactly(3))
...