JustMock несколько Mocks одного и того же интерфейса - PullRequest
0 голосов
/ 13 сентября 2018

В нашем решении у нас была действительно древняя версия JustMock.Мы написали около 7000 тестов, и один шаблон, который иногда появляется, состоит в том, чтобы иметь макет по умолчанию для определенного интерфейса для всех тестовых случаев и в некоторых тестах «переопределять» этот макет по умолчанию.

Это означает, что в некоторыхИз сотен тестов мы создаем макет и устраиваем его, а затем создаем еще один макет того же типа и устраиваем его тоже.Затем мы сделаем утверждение об этом втором макете.

Несколько месяцев назад мы обновились до текущей версии, и теперь эти множественные макеты одного типа больше не работают.Возьмите пример ниже.Я создаю два Mock одного типа и утверждаю, что второй mock вызывается один раз.В версии JustMock 2012 года этот тест не пройден, но в более поздней версии он не пройден.

Так что же делает JustMock, что мешает мне делать множественные макеты одного типа и утверждать их?И почему он это делает?

public interface IFoo
{
    void Bar();
}
[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        var bar = Mock.Create<IFoo>();
        Mock.Arrange(() => bar.Bar()).OccursOnce();

        var foo = Mock.Create<IFoo>();
        Mock.Arrange(() => foo.Bar()).OccursOnce();

        Mock.Assert(foo); // Succeeds in recent versions, fails in older versions as I would expect
        //Mock.Assert(bar); // Would fail as expected
    }
}

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

У меня только что была такая же проблема! Вы можете исправить это, используя Telerik.JustMock.Helpers расширения:

var bar = Mock.Create<IFoo>();
bar.Arrange(x => x.Bar()).OccursOnce();

var foo = Mock.Create<IFoo>();
foo.Arrange(x => x.Bar()).OccursOnce();

Теперь JustMock не допустит ошибки при поиске неправильного экземпляра в замыкании, потому что вы указываете его в выражении напрямую.

0 голосов
/ 02 октября 2018

Действительно, это похоже на регресс с предыдущей версией JustMock.Я зарегистрировал это как сообщение об ошибке на портале обратной связи JustMock.Вот ссылка, если вы хотите подписаться на обновления статуса: Mock assert не перестает работать, когда есть несколько mock с ожиданиями появления, которые не удовлетворяются .Проблема исправлена ​​в выпуске JustMock 2019.1.115.2.

...