【发布时间】:2010-02-05 15:10:58
【问题描述】:
我正在尝试使用 RhinoMocks,我不得不说我是一个新手,可能我在这里没有得到一些明显的东西。我正在做的是这样的:
[TestMethod]
public void SaveResponsibleUserFromChangeset()
{
var action = mocks.StrictMock<GenomeAction>();
var changeset = new ActionChangeset();
changeset.ResponsibleUser = new ChangeableProperty<UserIdentity>("Administrator") {IsChanged = true};
changeset.MarkAll(true);
using(mocks.Record())
{
Expect.Call(action.ResponsibleUser).SetPropertyAndIgnoreArgument();
}
using(mocks.Playback())
{
var persistor = new ActionPersistor(new MockIdentityResolver());
persistor.SaveActionChanges(changeset, action);
}
action.VerifyAllExpectations();
}
private class MockIdentityResolver : IIdentityResolver
{
public GenomeUser GetUser(UserIdentity identity)
{
var user = mocks.DynamicMock<GenomeUser>();
user.Username = identity.Username;
return user;
}
}
目的是进行一个非常简单的测试,检查SaveActionChanges 方法是否设置了ResponsibleUser 属性。作为其中的一部分,它需要使用解析器来解析用户身份,为此我提供了一个模拟实现。不幸的是,似乎我不能在播放模式下返回另一个模拟,因为它说(在第二次使用的右括号上)当对象(GenomeUser 类型)在记录中时,该操作无效状态。
有什么想法导致麻烦以及如何克服它?
【问题讨论】:
标签: c# .net unit-testing mocking rhino-mocks