代码具有运行时依赖性,这在我们的开发环境中是不可用的(并且在test和prod中可用)。实际测试依赖项的代价很高,我想测试环境。
if (isDevEnvironment) {
// fake it
}
else {
// actually do it
}
不使用appSettings,您会使用什么代码/技巧/测试来设置isDevEnvironment
?
答案示例:
我希望进行一项我没有考虑的测试。
答案 0 :(得分:3)
您应该尝试在代码中不测试您的环境!这就是为什么发明依赖倒置(然后注入)的原因。
从NewSpeak中汲取灵感,其中完整的平台在对象中被抽象出来,并作为参数传递给方法调用链。
答案 1 :(得分:2)
您提供的代码(if (isDevEnvironment) ..
)闻起来有test code in production。
不使用appSettings,您将使用什么代码/技术/测试来设置isDevEnvironment?
通常,依赖注入。
但也提供了链接中可能的解决方案。
您不应该检查环境,而是需要提供环境。
答案 2 :(得分:0)
你已经掌握了主要技巧。在我目前的工作中,我们使用Enviroment变量技术。
在以前的作业中,所有服务器都有三个NIC,有公共前端,服务器到服务器流量的中间层,后端网络操作将连接到。
有不同的IP子网。它可以很容易地检测到某些东西来自何处,以及它在哪里。
示例:
10.100.3.xxx - 前
10.0.1.x - 开发子网
这不需要在服务器上安装任何特殊内容,只需要代码检测然后进行缓存。
答案 3 :(得分:0)
我更喜欢这样做:
if(Properties.Settings.Default.TestEnvironment || HttpContext.Current.Request.ServerVariables["Server_Name"] == "localhost")
{
// do something
}