Полагаю, вы знакомы с официальной документацией , что, на мой взгляд, довольно хорошо.
Мое предложение состоит в том, чтобы попытаться использовать Rhino, и когда вы сталкиваетесь с какой-то более конкретной проблемой, ищите решение проблемы в SO или где-то еще. Я не думаю, что есть полная шпаргалка для насмешек Rhino. Я думаю, вам повезет больше, если бы вы спросили: «Как я могу сделать это и то, используя Rhino Mocks»
Edit:
Ну, вам не нужно использовать запись / воспроизведение при нацеливании на AAA.
ААА включает три этапа:
- Arrange , что означает настройку
поведение порицаемого класса, например
.
IOmicronDll mockWrapper = MockRepository.GenerateMock<IOmicronDll>();
mockWrapper.Expect(wrapper => wrapper.Lock(1, ref errors)).OutRef(string.Empty).Return(true).Repeat.Any();
mockWrapper.Expect(wrapper => wrapper.Exec(1, "sys:cfg?(type)", ref output, ref errors)).OutRef("1,CMC 56,0;", "").Return(true).Repeat.Any();
mockWrapper.Expect(wrapper => wrapper.Exec("1", "sys:cfg?(type)", ref output, ref errors)).OutRef("1,CMC 56,0;", "").Return(true).Repeat.Any();
Microsoft.Practices.Unity.UnityContainer c = new Microsoft.Practices.Unity.UnityContainer();
c.RegisterInstance<IOmicronDll>(mockWrapper);
Акт , который означает выполнение тестов
public Omicron(int deviceID)
{
try
{
if (g_Omicron == null)
g_Omicron = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<CMEngineWrapper.IOmicronDll>();
m_UniqueIdentifier = Guid.NewGuid();
m_Logger = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<AdvAdmittance.Framework.ILogger>();
m_ID = deviceID;
GetConfiguration();
g_InstancesCount++;
m_PollThread = new Thread(new ThreadStart(DoPoll));
m_PollThread.Start();
}
и Assert , что означает "самоконтроль"
результаты
.
Assert.AreEqual("CMC 56", omicron.Type);
mockWrapper.AssertWasCalled(wrapper => wrapper.Release(), options => options.Repeat.AtLeastOnce());
Возможно, приведенные выше примеры не самые лучшие, но могут привести вас в правильном направлении.