Angularjs Cucumber.js测试不依赖任何web浏览器(无头或真实web浏览器)

Angularjs Cucumber.js测试不依赖任何web浏览器(无头或真实web浏览器),angularjs,testing,cucumberjs,Angularjs,Testing,Cucumberjs,我是一名基于.net的windows应用程序开发人员,现在是一名web开发人员。 在过去的几年里,我试图在一个项目中遵循的原则。 在我参与的上一个项目中,我们的团队使用WPF和MVVM(Model-View-ViewModel)模式,我尝试进行测试。(嗯..SpecFlow的覆盖率非常低,虽然这是因为它不是我们团队正式采用的,我不能在上面花费足够的时间。) 现在,我们的团队开始将现有的windows应用程序迁移到基于web的应用程序,并决定使用cucumber.js作为实现“示例规范”的工具 当

我是一名基于.net的windows应用程序开发人员,现在是一名web开发人员。 在过去的几年里,我试图在一个项目中遵循的原则。 在我参与的上一个项目中,我们的团队使用WPF和MVVM(Model-View-ViewModel)模式,我尝试进行测试。(嗯..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中的这种方法是遗漏了什么还是错了? 请给我一些见解,如果我错了,请纠正我


提前谢谢

示例说明通过从用户的角度给出示例来指定需求。更能代表用户的是:单击网页上的项目,还是直接调用代码?用户不会在视图模型上调用方法,因此在我看来,功能测试是测试预期行为的更好方法。

我的问题似乎不够清楚。让我澄清我的想法。我的意思是,我想编写更抽象的功能文件,更多地关注用户的意图和高级行为,而不是在特定的UI元素(如脚本)上编写用户的特定操作。我希望步骤定义测试视图模型层与UI元素不紧密耦合。根据SBE手册和我的一些经验,我认为UI层更可能频繁地被更改。我想知道,由于某些原因,这种方法不推荐用于web开发或cucumber.js。