2009-06-20 5 views
6

Эй, люди ... пытаясь разобраться в asp.net MVC.Что бы этот код Moq выглядел как в RhinoMocks

Я нашел этот пример в сети с помощью Moq, в основном я понимаю, что когда вызывается ApplyAppPathModifier, возвращайте значение, которое было передано ему.

Я не могу понять, как это сделать в Rhino Mocks, любые мысли?

var response = new Mock<HttpResponseBase>(); 
response.Expect(res => res.ApplyAppPathModifier(It.IsAny<string>())) 
      .Returns((string virtualPath) => virtualPath); 
+0

Это может реально работать, только тестирование теперь ... его дерны закон, как только вы размещаете вопрос, который вы затем найти ответ ... подтвердит SetupResult .Для (response.ApplyAppPathModifier (Arg .Is.Anything)). IgnoreArguments() . Do ((Func ) ((arg) => {return arg;})); – Keith

ответ

3

Как я уже упоминал выше, дерны закон, как только вы размещаете на помощь вам найти 5 минут позже (даже после поиска на некоторое время). Во всяком случае в пользу других это работает:

SetupResult 
    .For<string>(response.ApplyAppPathModifier(Arg<String>.Is.Anything)).IgnoreArguments() 
    .Do((Func<string, string>)((arg) => { return arg; })); 
1

Если я неправильно читаю код, я думаю, вы можете немного упростить это. Попробуйте это:

var response = MockRepository.GenerateMock<HttpResponseBase>(); 

response.Stub(res => res.ApplyAppPathModifier(Arg<String>.Is.Anything)) 
         .IgnoreArguments() 
         .Return(virtualPath); 
+0

@womp, спасибо товарищу. В вашем примере, что такое virtualPath, существующая переменная? То, что мне нужно, - это вернуть переменную, которая была фактически передана ApplyAppPathModifier. Это не известно до времени выполнения. Я действительно получил его для работы, используя мой комментарий выше, и опубликует его сейчас. – Keith

+0

Если вы хотите узнать аргументы, переданные ApplyAppPathModifier, вы можете использовать код womp и добавить следующую строку: var args = response.GetArgumentsForCallsMadeOn (x = > x.ApplyAppPathModifier (Arg .Is.Anything)); –

8

Если вы используете метод заглушки в отличие от метода SetupResult, то синтаксис для этого ниже:

response.Stub(res => res.ApplyAppPathModifier(Arg<String>.Is.Anything)) 
       .Do(new Func<string, string>(s => s)); 
Смежные вопросы