【问题标题】:Testing Stores in Flux Architecture在 Flux 架构中测试存储
【发布时间】:2014-11-24 22:50:38
【问题描述】:

所以我将 Reflux 用于我的商店和操作。我有一个应用程序商店,其中包含一些应用程序范围的数据,包括是否启用了防止双击的标志。我的测试看起来像这样(使用 mocha、chai 和 sinon):

var applicationStore = require('../../../../web/app/components/core/application.store.js');
var initialState = _.clone(applicationStore._internalData, true);

function resetToInitialState() {
  applicationStore._internalData = _.clone(initialState, true);
}

chai.use(sinonChai);

describe('application store', function() {
  beforeEach(function() {
    resetToInitialState();
  });

  it('should have default data set properly', function() {
    expect(applicationStore.getPreventDoubleClick()).to.be.false;
  });

  it('should be able to enable prevent double click flag', function() {
    applicationStore._onEnablePreventDoubleClick();

    expect(applicationStore.getPreventDoubleClick()).to.be.true;
  });

  it('should be able to disable prevent double click flag', function() {
    applicationStore._onEnablePreventDoubleClick();
    applicationStore._onDisablePreventDoubleClick();

    expect(applicationStore.getPreventDoubleClick()).to.be.false;
  });
});

由于所有商店实际上都是单例的,因此在 beforeEach 中手动重置其内部数据是否是一种有效的测试方法,以确保没有测试影响另一个?有没有更好的方法来使用 mocha/chai/sinon?

【问题讨论】:

    标签: unit-testing mocha.js reactjs sinon


    【解决方案1】:

    自从我使用JestJS 以来,我还没有遇到过这个问题。它似乎处理单身人士真的很好

    我假设,建议切换测试框架是不可能的。

    如果是这样,那么您的设置似乎没问题。我的另一个想法是将它与商店内联。

    var _internalData = false;
    
    var applicationStore = {
        reset: function() {
            _internalData = false;
        }
    };
    

    然后你可以调用applicationStore.reset()来重置它,并测试重置功能。

    真的不理想。

    【讨论】:

      猜你喜欢
      • 2015-10-02
      • 2016-01-05
      • 2015-03-17
      • 2015-05-03
      • 2015-12-12
      • 2016-12-09
      • 2019-01-31
      • 2015-06-09
      • 2015-02-24
      相关资源
      最近更新 更多