【问题标题】:Difference between feature and browser tests功能测试和浏览器测试之间的区别
【发布时间】:2017-12-15 22:40:54
【问题描述】:

我对 Laravel 中的功能和单元测试感到熟悉。但最近我创建了一个新项目并发现了 Laravel Dusk。安装后,现在还有一个浏览器目录,我可以在其中放置我的测试。但现在我很困惑,功能和浏览器测试有什么区别?例如,我会在哪里放置类似的测试

a_visitor_can_signup()
the_index_page_shows()
the_contact_form_validates()
..

浏览器行为(交互)是典型的浏览器测试吗?并且类似请求的测试,例如测试 HTTP 状态 200 的端点以确保此时没有任何问题被破坏是功能测试吗?

【问题讨论】:

  • JavaScript。 Dusk 还运行你的 JS 而不仅仅是纯 HTML(“功能测试”)。

标签: laravel testing phpunit laravel-dusk


【解决方案1】:

我会这样总结: 如果测试中涉及到 javascript,请使用 laravel 黄昏(浏览器测试)。 如果没有,请坚持功能测试。

【讨论】:

    【解决方案2】:

    功能测试是一种测试,它测试产品可能要求的功能,而浏览器行为测试将测试特定操作。

    Feature Test: User can sign up.
    Browser Behavior Test: When user clicks the button it submits the form.
    

    基本上,功能测试是端到端测试。而浏览器行为测试是测试单个行为的单元或集成测试。

    通常,您希望进行单元测试——每个测试都测试一个行为。一个主要原因是可维护性。

    例如,如果测试一个 javascript 表单,您可能会进行如下行为 javascript 测试:

    describe("form#user-profile", function(){
      context("when a click event is triggered", function(){
        describe("`foo` is called with arguments a, b and c", function(){
           expect(foo).to.be.calledWith(a,b,c)
        })
      })
    })
    

    这将读出为“form#user-profile,当触发点击事件时,foo 会使用参数 a、b 和 c 调用。”这本质上是一个测试“浏览器行为”的单元测试

    参考文献

    Mocha

    Chai

    Sinon

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 2011-03-23
      • 1970-01-01
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多