Javascript 如何为不同设备、网络下的移动web应用编写可靠的单元测试?
我正在开发基于PhoneGap的网络应用程序。基本上我使用Jasmine作为我的测试框架。但是写健壮的单元测试对我来说是一件痛苦的事情。我遇到了这些问题,Javascript 如何为不同设备、网络下的移动web应用编写可靠的单元测试?,javascript,unit-testing,cordova,jasmine,Javascript,Unit Testing,Cordova,Jasmine,我正在开发基于PhoneGap的网络应用程序。基本上我使用Jasmine作为我的测试框架。但是写健壮的单元测试对我来说是一件痛苦的事情。我遇到了这些问题, 网络有时会变得不稳定 不同的设备,有的cpu频率高,ram大,有的cpu频率低 gps信号在不同情况下可能会变强或变弱 单元测试的结果可能因上述不确定条件而异。如何消除这些副作用并使结果更可靠?我不确定能否回答您关于如何消除这些副作用的实际问题,因为我对您的环境了解不多。然而,我确实认为你可以用不同的方式来思考你的测试,这可能会有所帮助 您的
单元测试的结果可能因上述不确定条件而异。如何消除这些副作用并使结果更可靠?我不确定能否回答您关于如何消除这些副作用的实际问题,因为我对您的环境了解不多。然而,我确实认为你可以用不同的方式来思考你的测试,这可能会有所帮助 您的单元测试不必考虑诸如“如果在运行测试时信号变弱会怎么样”之类的情况。相反,您应该有一个单元测试来模拟该条件,然后在这些条件下测试应用程序的预期行为。当您可以复制假设情况时,您就可以有效地为它们编写单元测试
接下来一个明显的问题是如何复制假设条件,我不确定PhoneGap或Jasmine是否能直接解决这个问题。也许你可以在模拟器中控制一些东西,有效地再现微弱的网络/gps信号。CPU/RAM功耗的差异可能只是需要很多设备才能进行测试。您建议在测试中模拟一切(环境、数据等)。实际上,我在真实设备上运行了所有这些测试,我确实希望在真实环境下进行测试。我不知道我是否把事情弄混了。在真实环境中进行测试不再是真正的单元测试。我想说的是更多的集成测试,可以用Jasmine编写脚本。然而,集成测试并不是你可以控制那么多变量的东西。请查看此链接以进一步描述差异。我想这仍然无法控制环境变量,但我认为这样做可能太难了。