【问题标题】:Stub not returning correct value with Rhino Mocks 3.6使用 Rhino Mocks 3.6 存根未返回正确值
【发布时间】:2010-05-12 09:06:35
【问题描述】:

我正在尝试使用带有 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 的 email 属性是 harry@test.com 而 user2 的 email 属性是 null

谁能解释我做错了什么?

【问题讨论】:

  • 只是想一想,Email getter 是在做什么吗?
  • 这是定义: public virtual string Email { get;设置;}

标签: rhino-mocks


【解决方案1】:

您将新旧语法混为一谈,看起来并不能很好地协同工作。如果要使用新语法(首选),则必须将设置方法更改为:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-21
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多