Я пытаюсь проверить логику из некоторых существующих классов. В настоящее время невозможно перегруппировать классы, поскольку они очень сложны и производятся.Rhino Mocks Partial Mock
Что я хочу сделать, это создать макет объекта и протестировать метод, который внутренне вызывает другой метод, который очень сложно издеваться.
Так что я хочу просто установить поведение для вызова вторичного метода.
Но когда я настраиваю поведение метода, код метода вызывается и терпит неудачу.
Я что-то упустил или это просто невозможно проверить без повторного факторинга класса?
Я пробовал все разные типы макетов (Strick, Stub, Dynamic, Partial ect.), Но все они в конечном итоге вызывают метод, когда я пытаюсь настроить поведение.
using System;
using MbUnit.Framework;
using Rhino.Mocks;
namespace MMBusinessObjects.Tests
{
[TestFixture]
public class PartialMockExampleFixture
{
[Test]
public void Simple_Partial_Mock_Test()
{
const string param = "anything";
//setup mocks
MockRepository mocks = new MockRepository();
var mockTestClass = mocks.StrictMock<TestClass>();
//record beahviour *** actualy call into the real method stub ***
Expect.Call(mockTestClass.MethodToMock(param)).Return(true);
//never get to here
mocks.ReplayAll();
//this is what i want to test
Assert.IsTrue(mockTestClass.MethodIWantToTest(param));
}
public class TestClass
{
public bool MethodToMock(string param)
{
//some logic that is very hard to mock
throw new NotImplementedException();
}
public bool MethodIWantToTest(string param)
{
//this method calls the
if(MethodToMock(param))
{
//some logic i want to test
}
return true;
}
}
}
}
Полностью пропустил это - вы абсолютно правы. – tvanfosson
Просто чтобы добавить, вы не можете генерировать частичный макет из интерфейса. Методы издевательства должны быть действительно отмечены виртуальными. –