Перемешанный метод возвращает ноль - PullRequest
3 голосов
/ 07 июля 2011

У меня есть простой метод тестирования в моем проекте Silverlight:

[TestMethod]
[Tag("User")]
public void ViewModel_NewUserAdded_DefaultCulturesLoaded()
{
    //setup
    Mock<INameService> mockNameService = new Mock<INameService>();
    MainViewModel viewModel = new MainViewModel();
    mockNameService
        .Setup(m => m.DefaultCultures(It.IsAny<Action<LoadOperation<kk_mp_name>>>()))
        .Returns(new Mock<OperationBase>(null).Object);
    viewModel.ContextName = mockNameService.Object;

    //action
    Messenger.Default.Send(-1, "New User Added");

    //verify
    mockNameService.Verify(
        (mo) => mo.DefaultCultures(It.IsAny<Action<LoadOperation<kk_mp_name>>>()),
        Times.Exactly(1));
}

Там метод DefaultCultures всегда возвращает null вместо нового mock-объекта.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 10 января 2013

Использует ли Messenger.Default.Send фиктивный объект, установленный на viewModel.ContextName?Если вы заходите в код до того момента, когда вы ожидаете, что будет вызван DefaultCultures, вы можете проверить конкретный тип ContextName, чтобы убедиться, что это фиктивный экземпляр.добавьте .Callback в настройку макета, чтобы установить точку останова и убедиться, что метод вызывается:

MainViewModel viewModel = new MainViewModel();
mockNameService
    .Setup(m => m.DefaultCultures(It.IsAny<Action<LoadOperation<kk_mp_name>>>()))
    .Callback((Action<LoadOperation<kk_mp_name>> a) =>
     {
         ; // Set breakpoint here
     })
    .Returns(new Mock<OperationBase>(null).Object);
0 голосов
/ 07 июля 2011

По вашим комментариям это выглядит как

var mockNameService = new Mock<INameService>(MockBehavior.Strict);

мало помогло.

Так что мой следующий вопрос - спросить, почему вы здесь переходите на Null.

new Mock<OperationBase>(null).Object

Можете ли вы опубликовать код для OperationBase?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...