在C#中,CreateInstance
方法通常用于創建一個類的實例。要進行單元測試,我們可以使用Moq庫來模擬依賴項并驗證是否正確地調用了這些依賴項。以下是一個簡單的示例,說明如何使用Moq對CreateInstance
方法進行單元測試:
首先,安裝Moq庫:
dotnet add package Moq
然后,創建一個接口和一個實現類:
// IMyService.cs
public interface IMyService
{
string DoWork();
}
// MyService.cs
public class MyService : IMyService
{
public string DoWork()
{
return "Working!";
}
}
接下來,創建一個類,該類使用IMyService
接口:
// MyClass.cs
public class MyClass
{
private readonly IMyService _myService;
public MyClass(IMyService myService)
{
_myService = myService;
}
public string MyMethod()
{
return _myService.DoWork();
}
}
現在,我們將使用Moq對MyClass
的MyMethod
方法進行單元測試:
// MyClassTests.cs
using Moq;
using Xunit;
public class MyClassTests
{
[Fact]
public void MyMethod_ShouldCallDoWorkOnMyService()
{
// Arrange
var mockMyService = new Mock<IMyService>();
mockMyService.Setup(service => service.DoWork()).Returns("Mocked work!");
var myClass = new MyClass(mockMyService.Object);
// Act
var result = myClass.MyMethod();
// Assert
Assert.Equal("Mocked work!", result);
mockMyService.Verify(service => service.DoWork(), Times.Once());
}
}
在這個測試中,我們創建了一個IMyService
的模擬實例,并設置了DoWork
方法的返回值。然后,我們將這個模擬實例注入到MyClass
中,并調用MyMethod
方法。最后,我們驗證DoWork
方法是否被調用了一次。