使用Node.js + Firebase进行e2e测试的示例

时间:2014-12-09 15:25:41

标签: node.js testing firebase

是否存在使用Node.js和Firebase进行正确端到端测试的在线示例?

我定义"正确"为:

  • 测试在与dev或prod
  • 不同的Firebase实例上运行
  • 在每次测试之前清除测试数据库

1 个答案:

答案 0 :(得分:0)

Firebase连接是持久的(即一旦连接,您的脚本将永久运行),因此端到端测试Firebase代码非常棘手。 This回答在那里添加了一些细节。我已经通过两种方式测试了Firebase交互:

  1. 使用Firebase运行您的应用程序,指向一些测试引用(而不是您的生产数据)并针对它编写一些测试。以这种方式跟踪TDD更加困难,因为您在编写应用程序后将编写这些测试。

  2. 子进程可能很有用,但是很狡猾(请谨慎行事):

  3. 模拟user.js的

    var Firebase = require('firebase');
    var ref = new Firebase('https://<your-app>.firebaseio.com/testUsers');
    
    ref.set({user1: {name: 'Mike'}}, function(err){
        if (err){
            process.exit(1);
        } else{
        ref.child('user1').remove(function(err){
          if (err){
            process.exit(1);
          }
          process.exit(0);
        });
        }
    });
    

    test.js

    var test = require('tape');
    var exec = require('child_process').exec;
    
    test('firebase', function(t){
      t.plan(1);
      exec('node ./mock-user.js', {timeout: 5000}, function(err, stdout, stderr){
        t.ok(err === null, 'firebase user created and destroyed');
      });
    });
    

    此测试依赖于子进程的退出代码。我不认为这会被认为是一种最佳做法,但希望它会稍微提出您的问题。