我是一名基于.net的Windows应用程序开发人员,现在是一名Web开发人员。 在过去的几年里,我尝试在项目中遵循Specification by example的原则。 在我参与的最后一个项目中,我们的团队使用WPF和MVVM(Model-View-ViewModel)模式,我尝试SpecFlow进行测试。 (嗯.. SpecFlow的覆盖范围非常低,但因为它没有从我们的团队正式采用,我也没有足够的时间在它上面。)
现在我们的团队开始将现有的Windows应用程序迁移到基于Web的应用程序,并决定使用cucumber.js作为实现“按示例进行规范”的工具。
当我之前尝试使用SpecFlow时,我制作了所有步骤定义来测试ViewModel层而不是View,这是实际的唯一方法。我对cucumber.js感到困惑的是,大多数示例都演示了如何通过Web浏览器(无头或真实的)测试功能。
如果功能指定了特定的ui行为,那么访问DOM元素并评估其值是有意义的。但是,据我通过示例了解规范,建议在UI层下进行测试而不是直接使用UI元素。
现在大多数现代Web应用程序都有像MVC,MVVM(knouckout.js)这样的层。我们的Web应用程序将使用Angularjs,这是我的理论。
我想可以使用功能文件 - 它没有说明任何特定的UI控件和行为 - 在UI层的皮肤下进行测试,而不依赖浏览器支持。该层将是angularjs的模型,而不是ui元素。
这种做法是否遗漏了cucumber.js的错误或错误? 如果我错了,请给我一些见解并纠正我。
提前致谢!
答案 0 :(得分:1)
通过示例规范通过从用户的角度给出示例来指定要求。什么更具代表性的用户:点击网页上的项目,或直接调用代码?用户不会在您的视图模型上调用方法,因此在我看来,功能测试是测试预期行为的更好方法。