Как установить Expect для метода Extension в Rhino Mocks 3.6 - PullRequest
1 голос
/ 30 марта 2011

Добрый день

У меня есть класс, и у него есть связанный метод расширения.

public class Person{
    public int ID {get;set}
    public string Name {get;set}
}

Метод расширения:

public static class Helper {
   public static int GetToken(this Person person){
       int id = 0;
       //Something here is done to read token from another service...
       return id;
   }
}

Теперь я пытаюсь использовать Rhino и протестировать этот метод

public void readPersonToken(int personId) {

   var person = Person.GetPersonInfo(personId);//we consume a service here
   Console.Writeline(person.GetToken());//get token is consuming another service

}

Предположим, я пишу свой тест и у меня уже есть интерфейс, который вызывает GetPersonInfo ()

var _interface = MockRepository.GenerateMock<IMyInterface>();

, а главное -

_interface.Expect(x => x.GetPersonInfo(2))
          .Return(new Person { ID=2, Name = "A Stubbed Monica!" });

как мне создать тест для расширения метода GetToken?

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

Методы расширения - просто синтетический сахар для статических методов.Итак, что вам действительно нужно, так это возможность смоделировать статический метод здесь.К сожалению, это невозможно в Rhino Mocks.

См. Следующую ветку StackOverflow для получения более подробной информации.

Чтобы смоделировать статический методвам нужна фреймворк, который фактически использует профилировщик CLR для перехвата вызовов методов.Поскольку поток упоминает, TypeMock должен быть в состоянии сделать это.

0 голосов
/ 12 июля 2012

Это должно быть возможно путем создания заглушки для методов расширения.

Методы расширения в Mono 2.4 и RhinoMocks 3.5

...