gpt4 book ai didi

c# - Rhino 模拟 AAA ExpectationViolationException

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:32 26 4
gpt4 key购买 nike

运行 rhinomock 测试方法时出错:测试方法 TestProject1.UnitTest2.TestMethod1 抛出异常:Rhino.Mocks.Exceptions.ExpectationViolationException: ITestInterface.Method1(5);预期 #1,实际 #0。

我的代码看起来像:-

namespace ClassLibrary1
{
public interface ITestInterface
{
bool Method1(int x);

int Method(int a);
}

internal class TestClass : ITestInterface
{

public bool Method1(int x)
{
return true;
}

public int Method(int a)
{
return a;
}
}
}

我的测试看起来像:-

using ClassLibrary1;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Rhino.Mocks;

namespace TestProject1
{
[TestClass]
public class UnitTest2
{
[TestMethod]
public void TestMethod1()
{
ITestInterface mockProxy = MockRepository.GenerateMock<ITestInterface>();

TestClass tc = new TestClass();
bool result = tc.Method1(5);

Assert.IsTrue(result);


mockProxy.AssertWasCalled(x => x.Method1(5));

}
}
}

感谢任何帮助。

最佳答案

您希望 ITestInterface.Method1 被调用,但它从来没有调用过。
您根本不在测试代码中使用您的 mockProxy - 您只是创建它并创建您自己的实例,但它们两者之间没有任何关系。
您的 TestClass 不依赖于您想要模拟的任何接口(interface),使用模拟的类似示例是:

internal class TestClass
{
private ITestInterface testInterface;

public TestClass(ITestInterface testInterface)
{
this.testInterface = testInterface;
}

public bool Method1(int x)
{
testInterface.Method1(x);
return true;
}

}

[TestClass]
public class UnitTest2
{
[TestMethod]
public void TestMethod1()
{
ITestInterface mockProxy = MockRepository.GenerateMock<ITestInterface>();

TestClass tc = new TestClass(mockProxy);
bool result = tc.Method1(5);

Assert.IsTrue(result);


mockProxy.AssertWasCalled(x => x.Method1(5));
}
}

我认为您应该阅读更多关于使用 Rhino Mocks 的内容,例如Rhino Mocks AAA Quick Start?

关于c# - Rhino 模拟 AAA ExpectationViolationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9494609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com