一个模拟的服务调用返回 Null 而不是 false - 为什么?

问题描述

模拟的服务是:

public async Task<bool> AddAndSaveEventAsync(DomainEvent evt);

它正在被调用

commandResult = await JSEventService.AddAndSaveEventAsync(new JobSeekerCreatedDomainEvent(jobSeeker));
        

我的 UnitTest 中的代码是:

var domainEvent = new JobSeekerCreatedDomainEvent(js);

JSDomainEventService.Setup(eventService => eventService.AddAndSaveEventAsync(domainEvent))
                    .Returns(Task.Fromresult(true));

域事件在我调试时有效。它确实会进入调用 JSEventService 的代码所在的 CommandHandler。

我不知道为什么对 AddAndSaveEventAsync() 的调用返回 null。

解决方法

这是因为您将实际对象传递给模拟调用。

您应该使用 It.Is<>It.IsAny<> 以便匹配器匹配对象的形状而不是实际引用。