Stub没有使用Rhino Mocks 3.6返回正确的值

时间:2010-05-12 09:06:35

标签: rhino-mocks

我正在尝试使用带有AAA的Rhino Mocks 3.6编写测试。我遇到的问题是我设置的Stub似乎没有返回正确的对象。

以下测试失败:

    [SetUp]
    public void SetUp()
    {
        repository = new MockRepository();
        webUserDal = repository.Stub<IWebUserDal>();
    }

    [Test]
    public void Test()
    {
        var user1 = new WebUser{Status = Status.Active, Email = "harry@test.com"};
        webUserDal.Stub(x => x.Load(Arg<string>.Is.Anything)).Return(user1);

        var user2 = webUserDal.Load("harry@test.com");

        Assert.AreEqual(user1.Email, user2.Email);
    }

User1的电子邮件属性为harry@test.com,而user2的电子邮件属性为null

有人能说清楚我做错了吗?

1 个答案:

答案 0 :(得分:3)

你混淆了新旧语法,它似乎并没有很好地协同工作。如果要使用新语法(首选),则必须将设置方法更改为:

[SetUp]
public void SetUp()
{
    webUserDal = MockRepository.GenerateStub<IWebUserDal>();
}

如果您创建MockRepository对象,则需要在使用mocks之前运行repository.ReplayAll(),但这是旧语法。所以最好只使用静态方法。