我试图测试一些现有类的逻辑。由于这些类非常复杂且已在生产中使用,目前无法重构这些类。
我的目标是创建一个模拟对象并测试一个内部调用另一个非常难以模拟的方法的方法。
因此,我只想为次要方法调用设置行为。
但是当我设置方法的行为时,方法的代码被调用并失败了。
我是否漏掉了什么或者说没有进行重构就不可能进行测试?
我尝试了所有不同类型的模拟(Strick、Stub、Dynamic、Partial等),但它们在我尝试设置行为时都会调用该方法。
我的目标是创建一个模拟对象并测试一个内部调用另一个非常难以模拟的方法的方法。
因此,我只想为次要方法调用设置行为。
但是当我设置方法的行为时,方法的代码被调用并失败了。
我是否漏掉了什么或者说没有进行重构就不可能进行测试?
我尝试了所有不同类型的模拟(Strick、Stub、Dynamic、Partial等),但它们在我尝试设置行为时都会调用该方法。
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;
}
}
}
}