Rhino Mocks在调试模式下表现出不同的行为

时间:2011-10-19 00:13:03

标签: c# rhino-mocks

我遇到一个问题,即当我run进行单元测试时,简单的Rhino Mock存根方法可以正常工作,但在Can't create mocks of sealed classes模式下执行时会抛出异常debug。我尝试用Do方法替换Return,但这并未改变行为。

在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);
}

2 个答案:

答案 0 :(得分:6)

刚出现这个问题。 我删除了隐藏的.suo文件,确定它有效。

当我意识到通过删除设置时,异常捕获选项也被删除了。任何例外情况都没有停止。重新启用“调试”中的选项 - &gt;“例外...”会重新显示错误。

然而,它是 First Chance异常,所以一个简单的F5(继续)将跳过它,代码实际上按预期运行。

简而言之,删除suo文件的解决方案意味着重置设置,从而忽略异常。

答案 1 :(得分:2)

删除suo文件

<强> 说明: 在PatrickSteele亲切地向我指出用我的代码创建一个新项目确实有效之后,我比较了原始项目和新项目中的每个文件,发现只有suo文件不同。 (Guids,项目名称等除外)。

删除解决方案的.suo文件后问题解决了。这不是我最喜欢的问题的答案,而是一个非常简单的答案。