#rhino-mocks
#rhino-издевается
Вопрос:
Попытка издеваться над функцией с помощью RhinoMock.
var repository = new Rhino.Mocks.MockRepository();
var classMock = repository.DynamicMock<Customer>();
Expect.Call(classMock.getCustomerAge("john")).Return(12);
Проблема в том, что в ожидаемом.Строка вызова на самом деле вызывает функцию, которую она должна издеваться. Я делаю что-то не так? Разве цель издевательства не в том, что вам не нужно запускать фактическую функцию?
public class AgeProvider
{
private static Service _Service;
private static string _User;
public AgeProvider()
{
}
public AgeProvider(ISession session, string authenticatedUser)
{
_Service = new Service(session);
_user = authenticatedUser;
}
public int getCustomerAge(string userToSearch)
{
var user = _Service.FindUser(_user, userToSearch);
return user.age;
}
}
Упростил класс, где функция — это то, что я пытаюсь издеваться.
Ответ №1:
является ли метод виртуальным? Я думаю, вам также нужно использовать частичный макет, если вы издеваетесь над классом, а не над интерфейсом.
Комментарии:
1. можете ли вы обновить вопрос определением класса customer?
2. Добавлен упрощенный класс к вопросу.
3. Спасибо. Поскольку этот метод не является виртуальным, Rhino не сможет издеваться над ним как есть, что, я думаю, является вашей проблемой.
Ответ №2:
Вероятно, это потому, что вы используете более старую семантику записи / воспроизведения. Вместо этого используйте новый стиль AAA (Arrange / Act / Assert):
classMock.Stub(r => r.getCustomerAge("john")).Return(12);
Комментарии:
1. Хотя я думаю, что предложение использовать новый стиль является хорошим, я не думаю, что семантика должна иметь какое-либо значение, вы должны иметь возможность имитировать виртуальный вызов в любом случае, используя новый или старый стиль