如何创建和测试特定于环境的代码?

时间:2013-05-25 21:55:41

标签: ruby testing sinatra

我有一个网络应用程序,希望跟踪/编写来自不同州立法机构的账单。然而,我发现的问题是,许多州对票据架构,进展规则有不同的规定(即某些州允许您重新考虑失败的票据,而其他州则不然),等等。

我现在在模型中处理它的方法是创建一个Bill类,然后有条件地重新打开该类,并根据环境变量向该类添加其他字段和验证。目的是让每个州都有自己的应用程序安装,因此我会将STATE设置为OR并使应用程序使用俄勒冈州法案规则。

然而,这对我来说已成为一个巨大的问题。重新打开这样的类在生产中运行得很好,但是它变得非常难以测试,因为类需要在启动时打开并且不能被禁用以进行测试,除非我以某种方式使用不同的环境变量重新加载整个程序。我搜索了Google和StackOverflow,但是我没有得到任何关于我正在寻找的最佳实践的结果,要么是因为它们不存在,要么我不知道它的名称。

1 个答案:

答案 0 :(得分:1)

既然你在询问环境变量,为什么不使用环境变量?

ENV可以做到这一点,只需在那里添加适当的状态。

>> ENV['State_Code'] = 'FL'
=> "FL"
>> ENV['State_Code']
=> "FL"

更改它,因为您想测试不同的规则。

这样做的好处是可以从应用程序外部进行设置,因为从您的环境中读取ENV并不奇怪。