【问题标题】:BDD for Front-End Code?前端代码的 BDD?
【发布时间】:2013-04-15 17:39:43
【问题描述】:

目前,我正在与我公司的程序员和 UX 合作,创建一个用于我们软件的模式/组件库。把它想象成我们自己的版本,比如 Twitter Bootstrap、jQuery UI 或 Yahoo!设计模式库。

我将使用 HTML5、CSS3 和 jQuery(可能使用 CoffeeScript)创建这个库。我应该使用像 Jasmine 这样的库来测试我的 js 吗?我问的原因是因为任何使用 jQuery 的组件都不会真正做比花哨的效果更多的事情。所以,我想,是否值得测试诸如“这个按钮在悬停时改变类吗?”之类的东西。或“我的手风琴菜单工作正常吗?”

我不熟悉简单前端代码的测试实践,所以我想要一些建议。

【问题讨论】:

    标签: jquery design-patterns bdd jasmine


    【解决方案1】:

    我说把浏览器测试放在那里,你可以使用 Jasmine 或 Selenium(我尽量使用 Selenium)。

    除了基本的“这项工作是否按预期工作”测试之外,当对 jQuery 之类的东西进行重大更新时,您可以快速重新运行您的测试套件并查看失败的地方。这将为您节省大量时间,并且一旦您解决了问题(如果有的话),您就可以为下一个问题做好准备。

    【讨论】:

    • 谢谢,我想 Stack Overflow 会告诉我这样做只是为了代码维护。但我并没有完全想到更新和向后兼容性。
    【解决方案2】:

    如果您的 javascript 中有逻辑,那么单元测试就有意义。为此保留一个测试套件。

    另外,专注于测试端到端的东西的系统测试。在您的情况下,使用 selenium 之类的工具进行浏览器测试也很重要。这有助于解决库更新时的回归问题,尤其是对于库更新频繁或有时库相互交换的 JS。

    【讨论】:

      【解决方案3】:

      我发现将 BDD 与库和框架结合使用的最佳方法之一是创建一些实际使用该框架的小型应用程序。然后,这些还为需要知道如何使用它的任何其他人提供文档。这实际上是大多数 BDD 框架本身(JBehave、Cucumber 等)的设计方式。你可以看到一个类似here 的例子,我用一个宠物店来驱动一个自动化工具,并围绕宠物店编写场景。

      为了美观,您可能无论如何都要手动测试它们,@ashutosh-raina 建议在这里对任何逻辑进行单元测试非常棒。当您为玩具应用程序编写场景时,请关注what they can do 而不是它们是如何做到的,您可能会发现您在全栈级别涵盖了大部分功能。不要担心强迫它,因为单元测试会完成其余的工作。我链接到的示例是 .NET,但应该让您了解我的意思。

      玩具应用的另一个好处是,如果您收到新请求,您通常可以找到一种方法来添加某些内容或更改应用以演示该请求,然后轻松添加并确保它可以正常工作。

      如果您编写的场景过多,您的套件将很快变得无法维护,并使您的代码更难更改,这与您想要的完全相反。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多