我正在尝试使用带有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
有人能说清楚我做错了吗?
答案 0 :(得分:3)
你混淆了新旧语法,它似乎并没有很好地协同工作。如果要使用新语法(首选),则必须将设置方法更改为:
[SetUp]
public void SetUp()
{
webUserDal = MockRepository.GenerateStub<IWebUserDal>();
}
如果您创建MockRepository对象,则需要在使用mocks之前运行repository.ReplayAll(),但这是旧语法。所以最好只使用静态方法。