c# - 在集成测试中获取 IHostingEnvironment
问题描述
我正在尝试为以下类编写集成测试,但我坚持在测试中获取 IHostingEnvironment。我假设我应该能够从 TestServer 获得 IHostingEnvironment 但没有骰子。我错过了一些基本的东西吗?这是一个比集成测试更适合单元测试的场景吗?
实际班级
public class PasswordResetMessage : IMessage
{
private readonly PasswordReset passwordReset;
private readonly IHostingEnvironment iHostingEnvironment;
public PasswordResetMessage(IHostingEnvironment iHostingEnvironment, PasswordReset passwordReset)
{
this.passwordReset = passwordReset;
this.iHostingEnvironment=iHostingEnvironment;
}
public string Get()
{
var stringBuilder = new StringBuilder();
var pathToFile = Path.Combine(iHostingEnvironment.ContentRootPath, "EmailTemplates", "password_reset.txt");
using (var streamReader = File.OpenText(pathToFile))
{
stringBuilder.Append(streamReader.ReadToEnd());
}
return stringBuilder.Replace("{{ActionURL}}", passwordReset.ActionURL).ToString();
}
}
集成测试:
public class PasswordResetMessageTest
{
private PasswordResetMessage passwordResetMessage;
private readonly TestServer testServer;
public PasswordResetMessageTest()
{
testServer = new TestServer(new WebHostBuilder().UseStartup<Startup>());
passwordResetMessage = new PasswordResetMessage(**<IDon'tKnowWhatToPassHere>**, new PasswordReset());
}
[Fact]
public void Get()
{
var message=passwordResetMessage.Get();
Assert.Contains(message, "");
}
}
解决方案
推荐阅读
- node.js - 在电子应用程序中,当我使用worker_thread时,使用Command+Q退出应用程序后出现异常
- intellij-idea - Pycharm显示工具栏,缺少主菜单
- flutter - 付款交易后用卡创建令牌
- javascript - 在 React 中单击轮播图像时如何重定向?
- flutter - 在 Flutter 中,如何使用 DateTime 获取不同时区的时间?
- .net - AWS - Elastic Beanstalk - eb 部署在 Linux 上的 .NET 核心上失败
- kubernetes - 是否可以防止 k8s 秘密为空(零字节)?
- javascript - 使用 Axios 从文件中检索数据,html 文件返回 404 错误但其他文件类型工作
- php - 更新时是否必须绑定数据库表中的所有值,并且更新类似于插入?
- file - MiNiFi GetFile 处理器无法获取大文件