2014-11-24 5 views
0

그래서 매장과 작업에 역류가 사용됩니다. 응용 프로그램 저장소에 두 번 클릭 방지 여부에 대한 플래그를 포함한 일부 응용 프로그램의 광범위한 데이터를 사용할 수 있습니다. 내 테스트 (모카, 차이, 그리고 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을 사용하여 더 좋은 방법이 있습니까?

답변

-1

나는 JestJS을 사용하기 때문에 그 문제에 부딪치지 않았습니다. 싱글 톤 을 정말 잘 처리하는 것 같습니다..

테스트 프레임 워크를 전환하는 것이 좋습니다.

그런 경우 설정이 정상적으로 처리됩니다. 내 다른 생각은 가게와 인라인을 이루는 것입니다.

var _internalData = false; 

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

그런 다음 applicationStore.reset()을 호출하여 재설정하고 재설정 기능을 테스트 할 수 있습니다.

이상적인 것은 아닙니다.

관련 문제