Rhino mock调用被模拟的函数

时间:2011-10-06 12:39:18

标签: rhino-mocks

尝试使用RhinoMock模拟函数。

var repository = new Rhino.Mocks.MockRepository();
var classMock = repository.DynamicMock<Customer>();
Expect.Call(classMock.getCustomerAge("john")).Return(12);

问题是在Expect.Call行中它实际上调用了它应该模拟的函数。难道我做错了什么?嘲笑的目的不是你不必运行实际的功能吗?

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;
    }

}

简化了类,我正在尝试模拟函数。

2 个答案:

答案 0 :(得分:4)

是虚拟的方法吗?我认为如果你在嘲笑一个类而不是一个接口,你还需要使用局部模拟。

答案 1 :(得分:2)

这可能是因为你正在使用较旧的记录/重放语义。相反,使用新的AAA(安排/行动/断言)风格:

classMock.Stub(r => r.getCustomerAge("john")).Return(12);