首页 > 解决方案 > 在集成测试中获取 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, "");
        }
    }

标签: c#.netasp.net-coreintegration-testing

解决方案


推荐阅读