0

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

a_visitor_can_signup()
the_index_page_shows()
the_contact_form_validates()
..

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

4

2 回答 2

3

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

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 调用。” 这本质上是一个测试“浏览器行为”的单元测试

参考

摩卡

诗乃

于 2017-07-11T18:20:45.663 回答
0

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

于 2018-08-15T10:27:39.240 回答