确保appSettings键中没有拼写错误

时间:2018-07-02 13:49:17

标签: c# .net unit-testing

假设我们有一个带有Web.config的Web应用程序,如下所示:

<configuration>
   <appSettings>
      <add key="ClientCommunicationsBaseUrl" value="http://somehost.dev.com" />
   </appSettings>
<configuration>

部署应用程序后,将在每个环境中替换值('dev')。已经为其中的某些CD工具(例如Octopus Deploy)进行了这种替换。

在任何情况下,CD工具都希望密钥已正确写入。以下将失败。

<configuration>
 <appSettings>
    <add key="ClientComunicationsBaseUrl" value="http://somehost.dev.com" />
 </appSettings>
<configuration>

请注意,ClientComunicationsBaseUrl中只有一个'm'!

在部署之前,我们如何确保web.config中的所有密钥正确?

1 个答案:

答案 0 :(得分:0)

您将需要在单元测试中隔离这种验证。毕竟,在开发人员处理代码时,这些类型的错误随时可能发生,并且您希望在它们发生时随时得到警告。

您可能希望包括一整套检查以下各项的测试:

  1. 是否存在所有必需的设置?
  2. 所有可选设置是否拼写正确? (也就是说,您可以检索它们吗?)
  3. 对于每个设置,该值是该设置可接受的值之一吗?
  4. 如果缺少可选设置,是否有合理的默认值定义并为其返回?

我们通常将所有与配置的交互封装在一个类(通常称为RuntimeConfig)中,该类专门负责该工作。单元测试练习该课程。如果您在接口后抽象该类,则还可以使用模拟来模拟特定设置和值的存在或不存在。