我想知道为SelectList设置默认值是表示逻辑还是业务逻辑?例如,如果要求在没有位置的情况下不能保存员工,但是99%的时间将选择的位置是特定的项目--比如亚特兰大。正因为如此,每当显示新员工的输入屏幕时,位置SelectList都应默认为亚特兰大。我应该默认模型中的位置还是视图模型中的位置?我意识到的一件事是,单元测试变得很笨拙,因为在这两种情况下,我都会被迫在一个始终存在于生产环境中的位置上进行测试,但我不能使用自己的测试数据创建单元测试,除非"Atlanta“在测试中使用的位置集中。如果你对此也有任何想法,我将不胜感激。
发布于 2010-06-19 02:51:06
对于许多这样的问题(主观的),答案是:“视情况而定。”
如果“默认值”是业务默认值(例如,业务位置的默认位置,或订单或诸如此类的默认单位数),则可能是业务层。对于您这里的特定情况,这似乎是正确的。
但是,如果列表的“默认值”仅仅是因为您需要某个值作为默认值,而您只是要选择索引0,或者只是要根据用户的位置或系统设置进行选择,我认为这些都是表示层的问题。
发布于 2010-06-19 02:50:00
因此,每当显示新员工的输入屏幕时,位置SelectList都应默认为Location5。我应该默认模型中的位置还是视图模型中的位置?
在您的示例中,这是业务逻辑,但这不会阻止您在此实例中拥有自己的蛋糕。模型可以指定一个缺省值;然后视图用这个缺省值初始化自己。
通常,某些东西是“业务逻辑”还是“表示逻辑”取决于它是否涉及领域。例如,将日期下拉列表中的最早年份设置为1900可能是一个表示问题。但如果系统没有设计为接受早于1900年的日期,这也可能是一个业务问题。
我意识到的一件事是,单元测试变得很笨拙,因为在这两种情况下,我都会被迫在一个始终存在于生产环境中的位置上进行测试,但我无法使用自己的测试数据创建单元测试,除非“亚特兰大”在测试中使用的位置集中。如果你对此也有任何想法,我将不胜感激。
使用我上面提到的策略,单元测试很容易。只需验证:
<>F213
发布于 2010-06-19 02:47:09
我会认为默认值是业务逻辑。
例如,如果公司重新定位默认位置不再是"Altanta“或"London",而是"New York”或"Nottingham“。
https://stackoverflow.com/questions/3072287
复制相似问题