c# - 我如何从这个模拟服务中获得结果?
问题描述
如何从模拟服务中获得结果?注意:它可以正常工作。我只是想让考试继续进行。
服务:
public interface ISendgridService
{
Task<Response> SendAsync(IEmailMessage emailMessage);
}
// 考试
[TestMethod]
public async Task SendEmailTest()
{
// Arrange
var mockSendgrid = new Mock<ISendgridService>();
var response = new Mock<Func<SendGrid.Response>>();
mockSendgrid.Setup(s => s.SendAsync(It.IsAny<IEmailMessage>()))
.ReturnsAsync(response.Object.Invoke);
var emailMessage = _builder.CreateNew<EmailMessage>()
.With(e => e.From = _sendgridConfiguration.SenderEmail)
.With(e => e.FromName = _sendgridConfiguration.SenderName)
.With(e => e.To = Faker.Internet.Email())
.Build();
// Act
var result = await mockSendgrid.Object.SendAsync(emailMessage);
// Assert
// result is null // How do I get a value?
}
解决方案
我对您要测试的内容有些困惑。通常,您会针对被测的具体类而不是存根对象执行操作。
伪代码如下:
public class SendGridService : ISendGridService {
public async Task<bool> SendAsync() {
//code that sends the email
}
}
你的测试就像:
//Act
var subject = new SendGridService();
var result = await subject.SendAsync();
//Assert
Assert.IsTrue(result);
推荐阅读
- c++ - 如何找到数字的第三位
- javascript - 如何正确检查字符串是否与javascript中的正则表达式匹配
- hyperledger-fabric - Hyperledger Fabric:签名通道更新
- c# - 使用 Marshal.Copy 时从位图中提取区域导致 AccessViolationException
- swift - 如何快速绑定数据?
- reactjs - 测试无法识别 React 组件的变化
- algorithm - 两个骑士相遇的最小移动次数
- android - Google 在我的应用中发现了 AdMob SDK,即使我没有使用它
- javascript - 如何制作使用附加行生成的表单的 CRUD(特别是编辑视图)?
- laravel-backpack - laravel 的背包:如何添加自定义动作/操作?