在 C# 中使用 Moq 框架测试一个方法是否在另一个方法内部被调用

问题描述 投票:0回答:0

希望有人能帮我解决这个问题。我正在编写一个测试,它将检查何时调用 Start() 方法,是否将调用 StartProcOld 或 StartProcNew 方法。它们每个都包含一个 if 语句,该语句将检查是否满足条件(标志)并根据该条件运行这些方法之一。我的问题是测试一直失败,即使在调试时我可以看到为条件调用的实际正确方法,测试失败并说它被调用了 0 次。这是我的测试代码,用于检查是否调用了 StartProcOld。谢谢。

[TestFixture]
    public class SomeTests
    {
        private Mock<BringClass> _BringClassMock;
        private NameValueCollection _mainC;
        private ClassWhereStartSitsIn.ClassWhereStartSitsIn _plugin;
        private SqlConnection _connection;
        private string _webServiceUrl;
        [SetUp]
        public void Setup()
        {
            _BringClassMock = new Mock<BringClass>();
            _mainC= new NameValueCollection();
            _plugin = new ClassWhereStartSitsIn.ClassWhereStartSitsIn();
            _pluginMock = new Mock<ClassWhereStartSitsIn.ClassWhereStartSitsIn>();
            _mockInterface = new Mock<IBringPlugIn>();
            _connection = new SqlConnection();
            _webUrl = "http://test.com";
            _mainC.Add("Id", "STRING");
            _mainC.Add("Setting", "5");
            _mainC.Add("MainPath", "G:\\Folder");
        }
        [Test]
        public void StartProcOldIsCalled()
        {
            _mainC.Add("Flag", "FALSE");
           _BringClassMock.Setup(x => x. StartProcOld(_mainC["Id"],It.IsAny<ClassWhereStartSitsIn.ClassWhereStartSitsIn()>, _mainC["Setting"]).CallBack<string, IInterfaceClassWhereStartSitsIn, int>((a,b,c) => new NameValueCollection());
            _plugin.Start(_connection, _webUrl, _mainC);
            _BringClass.Verify(x => x.StartProcOld(_mainC["Id"],It.IsAny<ClassWhereStartSitsIn.ClassWhereStartSitsIn()>, 5), Times.Once());
        }
c# .net testing nunit moq
© www.soinside.com 2019 - 2024. All rights reserved.