功能和浏览器测试之间的区别

时间:2017-07-11 18:12:45

标签: laravel testing phpunit laravel-dusk

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

a_visitor_can_signup()
the_index_page_shows()
the_contact_form_validates()
..

浏览器行为(交互)是典型的浏览器测试吗?是否会像HTTP状态200那样测试端点,以确保在此时没有被破坏的功能测试?

2 个答案:

答案 0 :(得分: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)
    })
  })
})

其中将显示为"表单#user-profile,当触发click事件时,使用参数a,b和c调用foo。"这本质上是一个测试浏览器行为的单元测试"

参考

Mocha

Chai

Sinon

答案 1 :(得分:0)

我将这样总结: 如果测试中包含javascript,请使用laravel dusk(浏览器测试)。 如果没有,请坚持进行功能测试。