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

kei*_*ith 5 c# rhino-mocks

我有一个问题,当我run进行单元测试时,一个简单的Rhino Mock存根方法可以正常工作,但是Can't create mocks of sealed classesdebug模式下执行时会抛出异常.我试着更换DoReturn方法,但是这并没有改变行为.

使用C#与Rhino Mocks 3.6,通过在单元测试中减去添加函数来冒犯任何人的道歉;)

接口

public interface ICalculator
{
    int Add(int value, int value2);
}
Run Code Online (Sandbox Code Playgroud)

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

单元测试

[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);
}
Run Code Online (Sandbox Code Playgroud)

Tha*_*nis 6

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

那时我意识到通过删除设置,异常捕获选项也被删除了.任何例外情况都没有停止.重新启用"Debug" - >"Exceptions ..."中的选项会使错误重新出现.

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

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


kei*_*ith 2

删除suo文件

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

删除解决方案的.suo 文件后,问题得到解决。这不是我最喜欢的这个问题的答案,但仍然是一个答案。