C# 如何使用MOQ中另一类单元测试中的mock方法

C# 如何使用MOQ中另一类单元测试中的mock方法,c#,unit-testing,mocking,moq,C#,Unit Testing,Mocking,Moq,我有两个问题: 无法模拟ClassStatic.Method(),因为它是静态的 如果我可以模拟ClassStatic,那么OnStep()方法如何调用被模拟的ClassStatic.method() 对不起我的英语 用于测试静态方法。但通常最好不要使用静态类和方法。像这样使用依赖项注入: class CurrentClass { public Task OnStep() { this.Property = ClassStatic.Method(); }

我有两个问题:

  • 无法模拟ClassStatic.Method(),因为它是静态的
  • 如果我可以模拟ClassStatic,那么OnStep()方法如何调用被模拟的ClassStatic.method()
  • 对不起我的英语

    用于测试静态方法。但通常最好不要使用静态类和方法。像这样使用依赖项注入:

    class CurrentClass
    {
    
        public Task OnStep()
        {
            this.Property = ClassStatic.Method();
        }
    }
    

    类ClassStatic与类Current分开!!!我不允许编辑代码!!!我怎么办?我认为没有垫片是不可能的。
    class MyClass
    {
        IUtility _util;
    
        public MyClass(IUtility util)
        {
            _util = util;
        }
    
        public Task OnStep()
        {
           this.Property = _util.Method();
        }
    }
    
    public TestMethod()
    {
        IUtility fakeUtil = Mock.Of<IUtility>();
    
        MyClass x = new MyClass(fakeUtil);
    
    
    }
    
    using (ShimsContext.Create())
    {
        // Arrange:
        // Shim ClassStatic.Method to return a fixed date:
        Namespace.ShimClassStatic.Method = 
        () =>
        { 
          // This will overwrite your static method
           // Fake method here
        };
    
        // Instantiate the component under test:
        var componentUnderTest = new MyComponent();
    
        // Act:
    
        // Assert: 
    }