3
我正在嘗試使用RhinoMocks,我不得不說我是一個新手,可能我在這裏沒有得到一些明顯的東西。我在做什麼是一樣的東西:使用RhinoMocks進行簡單嘲弄的問題.NET
[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)處於記錄狀態時,該動作無效 。
是什麼導致麻煩以及如何克服它的任何想法?
我已經使用了你的建議,並用AAA語法完全重寫了這個東西,現在它的功能就像魅力一樣。謝謝;) – 2010-02-05 17:40:30
+1也提到了優越的AAA語法 – 2010-02-05 23:08:03
來自我的AAA語法的另一個+1; Rhino Mocks的作者Oren Eini已經提到他的框架的下一個版本將取消Record/Playback語法,並且只提供AAA語法。 – 2010-04-23 14:37:44