前端测试框架Funcunit,Write better tests, faster

前端测试框架Funcunit,Write better tests, faster.

funcunit

在我们讨论了太久的selenium和webdriver之后,我们也有必要关注一些新模式下的支持黑盒的自动化测试框架,比如当前百花齐放,火的一塌糊涂的前端领域,我们已经看到了诸如PhantomJS之类的优秀框架,今天再分享Funcunit.

我是在这里看到Funcunit的一次介绍的:《FuncUnit 和 Cucumber —— 前端测试的最佳搭档》 作者在文中还给出了他例子的github地址,感兴趣的同学可以前往看一下。

你可以在这里看到Funcunit的demo,由于采用的Qunit,Functunit的速度非常快。

Funcunit适合用于JSMVC项目的web工程的自动化测试,可以给前端测试带来很高的效率,语法非常接近JQuery:

Funcunit比较有优势的Action API

比如.scroll() FuncUnit.prototype.scroll
官方的解释是:Scrolls an element in a particular direction by setting the scrollTop or srollLeft.
更多API和介绍,直戳官网

//slowing funcunit down for dramatic effect
F.speed = 100;

describe('TodoMVC', function(){
  it('should create and complete todos', function() {
    var newTodo = F('#new-todo');
    newTodo.type('FuncUnit [enter]');
    newTodo.type('is [enter]');
    newTodo.type('awesome! [enter]');

    F('.todo label:contains("FuncUnit")').visible();
    F('.todo label:contains("is")').visible();
    F('.todo label:contains("awesome")').visible();

    F('.toggle:not(:checked)').click();
    F('.toggle:not(:checked)').click();
    F('.toggle:not(:checked)').click();

    F('#clear-completed').click();
    F('.todo.completed').missing();
  });

  it('should filter todos, then complete', function() {
    var newTodo = F('#new-todo');
    newTodo.type('Simple [enter]');
    newTodo.type('Event [enter]');
    newTodo.type('Simulation [enter]');

    F('.toggle:not(:checked)').click();
    F('.toggle:not(:checked)').click();

    F('a:contains("Active")').click();
    F('.todo label:contains("Simple")').invisible();
    F('.todo label:contains("Event")').invisible();
    F('.todo label:contains("Simulation")').visible();

    F('a:contains("Completed")').click();
    F('.todo label:contains("Simple")').visible();
    F('.todo label:contains("Event")').visible();
    F('.todo label:contains("Simulation")').invisible();

    F('a:contains("All")').click();
    F('.todo label:contains("Simple")').visible();
    F('.todo label:contains("Event")').visible();
    F('.todo label:contains("Simulation")').visible();

    F('.toggle:not(:checked)').click();
    F('#clear-completed').click();
    F('.todo.completed').missing();
  });

  it('should destroy todos', function() {
    F('#new-todo').type('Sweet. [enter]');

    F('.todo label:contains("Sweet.")').visible();
    F('.destroy').click();

    F('.todo label:contains("Sweet.")').missing();
  });
});

配合BDD使用的案例

可以参见上述分享的文章链接。

其他可参考的BDD组合

python的behave+PhantomJS应该也是非常好的,能够落地的组合。

[转自:http://www.diggerplus.org/archives/3839]

发表评论

邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据