【发布时间】:2011-12-10 13:00:20
【问题描述】:
我有一个问题,当我 run 进行单元测试时,一个简单的 Rhino Mock 存根方法可以正常工作,但在 debug 模式下执行时会抛出异常 Can't create mocks of sealed classes。我尝试用Return 方法替换Do,但这并没有改变行为。
在 Rhino Mocks 3.6 中使用 C#,为在单元测试中使用 Add 函数减去而冒犯任何人表示歉意;)
界面
public interface ICalculator
{
int Add(int value, int value2);
}
类
public class Calculator : ICalculator
{
public int Add(int value, int value2)
{
return value + value2;
}
}
public class Sums
{
private ICalculator calculator;
public Sums(ICalculator calculatorArg)
{
calculator = calculatorArg;
}
public int Add(int value, int value2)
{
return calculator.Add(value, value2);
}
}
单元测试
[TestMethod()]
public void AddTest()
{
//ARRANGE
var calculatorArg = MockRepository.GenerateMock<ICalculator>();
Func<int, int, int> subtract = delegate(int valueArg, int value2Arg)
{
return valueArg - value2Arg;
};
calculatorArg.Stub(x => x.Add(-1,-1)).IgnoreArguments().Do(subtract);
Sums target = new Sums(calculatorArg);
int value = 5;
int value2 = 3;
int expected = 2;
//ACT
int actual = target.Add(value, value2);
//ASSERT
Assert.AreEqual(expected, actual);
}
【问题讨论】:
-
什么版本的 .NET 框架?此代码在 .NET 4.0(和 Rhino.Mocks 3.6)下的两种模式下都适用于我。如果您使用 GenerateStub 而不是 GenerateMock 会发生什么?
-
@PatrickSteele 嗯,你是对的,我重新创建了项目并且它正在工作。我的原始测试项目和新测试项目之间的目视检查显示没有任何变化——两者都使用相同的文件结构/内容和 .Net 框架(4.0)。我会做一个完整的比较,然后回帖
标签: c# rhino-mocks