Я написал несколько модульных тестов с использованием Rhino Mocks, и я доволен результатами, за исключением того факта, что мне пришлось представить базовый веб-сервис как общедоступный виртуальный (isUserInRoleWebService), предположительно, потому что это моя заглушкаиздеваться.Я обычно использую рефлексию, чтобы не показывать закрытые методы, но это не сработает на объекте.Кто-нибудь обходил это?Должен быть общий сценарий.
[SetUp]
public void SetUp()
{
_mockRepository = new MockRepository();
_entitlementCache = _mockRepository.PartialMock<EntitlementCache>();
}
[Test]
// simple test to verify membership of a single role
public void Test_SingleRoleMember()
{
(new ReflectedObject(_entitlementCache)).InvokeInstanceMethod(
"setRoleHierachy",
new object[] { hierachy2Level }
);
using (_mockRepository.Record())
{
// I had to convert isUserInRoleWebService to public :-(
_entitlementCache.Stub(x => x.isUserInRoleWebService("user", "Role 1"))
.Repeat
.Once()
.Return(true);
}
using (_mockRepository.Playback())
{
bool res = _entitlementCache.IsUserInRole("user", "Role 1");
Assert.AreEqual(true, res, "user member of 'Role 1'");
}
}
[TearDown]
public void TearDown()
{
_mockRepository.ReplayAll();
_mockRepository.VerifyAll();
}