Firebase功能:编写单元测试时不能对存储进行存根

use*_*644 3 mocha.js sinon firebase google-cloud-functions firebase-storage

我在index.js中有以下函数代码:

var admin = require('firebase-admin');
admin.initializeApp();
admin.storage();
Run Code Online (Sandbox Code Playgroud)

以及以下测试代码:

var assert = require('assert');
var sinon = require('sinon');
describe('Event Sourcing', function() {
  var myFunctions, adminInitStub, adminStorageStub,admin;

  before(() => {
    admin =  require('firebase-admin');
    adminStorageStub = sinon.stub(admin, 'storage');
    adminInitStub = sinon.stub(admin, 'initializeApp');

    myFunctions = require('../index');
  });

  after(() => {
    // Restoring our stubs to the original methods.
    adminInitStub.restore();
    adminStorageStub.restore();
  });

  describe('CREATED', function() {
      it('should return -1 when the value is not present', function() {
            assert.equal(-1, [1,5,3].indexOf(4));
          });
    });
});
Run Code Online (Sandbox Code Playgroud)

由于某些奇怪的原因,我不断收到以下错误,Error: The default Firebase app does not exist. Make sure you call initializeApp() before using any of the Firebase services.但我显然已经将其存根了。为什么存根只对initializeApp()有效,而对storage()无效。

谢谢!

use*_*644 6

admin.storage() 实际上是吸气剂,因此需要用这种方法

adminStorageStub = sinon.stub(admin, 'storage').get(() => {
  return () => {
    return {bucket: (() => {})};
  }
});
Run Code Online (Sandbox Code Playgroud)

有关sinon存根的更多信息,请参见http://sinonjs.org/releases/v2.0.0/stubs/