【发布时间】:2020-02-15 00:34:07
【问题描述】:
我正在尝试使用 xUnit 框架在 C# .Net Core 2.1 Function App 中编写单元测试,其中类变量通过 Autofac 依赖注入进行初始化。
public class TestClass
{
private readonly ISampleLogger<SampleReporting> sampleLogger;
private readonly IRequestSender requestSender;
public SampleReporting(IDependencyResolver dependencyResolver)
{
dependencyResolver?.Resolve<ISampleLoggingStartup>().Configure();
this.sampleLogger = dependencyResolver.Resolve<ISampleLogger<SampleReporting>>();
this.requestSender = dependencyResolver.Resolve<IRequestSender>();
}
...
public void FunctionToTest(string s)
{
...
我正在尝试模拟 dependencyresolver 对象,但无法弄清楚如何模拟变量 sampleLogger 和 requestSender,因为它们是在构造函数内部设置的。任何线索将不胜感激。
我试图像这样模拟 IDependencyResolver,但无法让它工作:
private readonly Mock<IDependencyResolver> dependencyResolverMock;
[Fact]
public void Test1()
{
dependencyResolverMock.Setup(x => x.Resolve<It.IsAny<ISampleLoggingStartup>>().Configure());
【问题讨论】:
-
当前状态下的问题不完整,因此不清楚。
-
你是如何创建
IDependencyResolver的模拟的? -
@ChetanRanpariya 请检查更新后的问题。
-
@Nkosi 添加了一些详细信息,如果您需要更多详细信息,请告诉我。简而言之,我只是希望能够为上面的代码编写单元测试。
-
您只需要模拟
Resolve方法并返回适当的模拟实例...Setup(d => d.Resolve<ISampleLoggingStartup>()).Returns(Mock.Of<ISampleLoggingStartup>)等等...
标签: c# unit-testing mocking moq xunit