我正在使用Java和JSP。我必须创建一个类似于促销的东西,有开始日期和结束日期。在开始日期和结束日期内,它将显示一个与促销对应的表单;否则,它将只显示一个普通页面。我已经根据他们打开页面的时间进行了验证。我可以通过将当前时间设置为我想要的任何时间来操纵单元测试中的时间。
然而,问题是当我想要将它传递给客户端进行测试时。他们想看看促销日是什么样子的?促销活动真的是在特定的时间进行的吗?之后它真的会关闭吗?一种可能的方法是在尝试访问页面时将当前日期作为HTTP参数秘密传递。这样做,客户端可以检查系统在特定日期的行为,但这确实非常危险。任何知道这一点的人都可以随时访问促销活动。我不知道处理这件事最好的办法是什么。
你的建议呢?
发布于 2011-11-29 11:18:32
首先,您不应该将此功能放到实时生产服务器上,因此不应该发生“非常危险”的暴露。
我会尝试一种“腰带加支架”的方法:
的秘密参数
<>F29
客户端可以访问演示框,并检查一切是否正常工作。当他们满意时,您将部署到生产环境中,但禁用了“演示模式”,因此只有“时间敏感”的促销访问方式才会起作用。
发布于 2011-11-29 12:05:15
将任何JSP (服务器端)代码建立在客户端发送的时间上听起来都不是一个好主意。最好是完全在服务器端处理这件事,并有一些方法来配置您和您的客户端可以进行测试的时间。
1)如果客户端真的很担心(或者您的应用程序很复杂)-合理地执行这样的测试的唯一方法可能是像Nathan Hoad的评论所建议的那样改变服务器时间。每一个其他的测试都是有信心的,因为它依赖于时间以外的东西,而不是滴答作响的时间和“触发”促销开始或结束。还要记住在促销过程中发生的活动-他们是否使用系统时间来做出决策,或者将日期/时间存储在数据库中等?
2)如果#1不是一个真正的问题,我会让你的代码检查你的代码中调用自定义函数的时间(对于提升的触发器)。getCustomTime()
)。默认情况下,该方法将返回系统时间,但也会检查是否配置了偏移量,并使用该偏移量来偏移实际时间。偏移量可以动态配置。
祝好运。
发布于 2011-11-29 12:17:27
您不需要调整服务器上的时间就可以将其演示给客户端。只需在系统中有一个已过期的促销,一个当前处于活动状态,另一个将在未来针对三个不同的项目进行促销,并向客户显示效果。
或者,或者在演示期间创建一个促销活动,在未来一分钟内生效,持续2-3分钟,然后过期,然后讨论并单击,向他们展示效果。
https://stackoverflow.com/questions/8305257
复制相似问题