node.js에서 process.env를 스텁하는 방법은 무엇입니까?
나는 스텁 할 process.env.FOO
함께 bar
.
var sinon = require('sinon');
var stub = sinon.stub(process.env, 'FOO', 'bar');
혼란 스럽습니다. 문서를 읽었지만 아직 이해가되지 않습니다. sinonjs 문서
sinonjs는 하나의 예이며 sinonjs는 괜찮습니다.
에 대한 나의 이해에서 process.env
속성을 접근 할 때 다른 변수처럼 간단히 처리 할 수 있습니다. 하지만의 모든 값 process.env
은 반드시 있어야합니다. 따라서 테스트에서 특정 값이 필요한 경우 :
it('does something interesting', () => {
process.env.NODE_ENV = 'test';
// ...
});
모든 상태가 다른 테스트로 위험하지 않을 것이 모두 제거되어야합니다.
afterEach(() => {
delete process.env.NODE_ENV;
});
나는 process.env
그것을 복제하고 그것을 복원하는 분해 방법으로 내 단위 테스트에서 수용하게 스터드 될 수 있습니다 .
Mocha를 사용 예
const env = Object.assign({}, process.env);
after(() => {
process.env = env;
});
...
it('my test', ()=> {
process.env.NODE_ENV = 'blah'
})
이것은 process.env가 테스트중인 함수에서만 읽는 경우에만 작동합니다. 예를 들어 테스트중인 코드가 변수를 읽고 클로저에서 사용하면 작동하지 않습니다. 제대로 테스트하기 위해 캐시 된 요구 사항을 무효화 할 수 있습니다.
예를 들어 다음은 env가 스텁하지 않습니다.
const nodeEnv = process.env.NODE_ENV;
const fnToTest = () => {
nodeEnv ...
}
A의 spec-helper.coffee
당신이 당신의 sinon 샌드 박스를 설정하는 곳이나 뭐라는, 원래의 추적 process.env
당신이 다시 기억하지 않는 모든 시간 후 복원합니다.
_ = require 'lodash'
sinon = require 'sinon'
beforeEach ->
@originalProcessEnv = _.cloneDeep process.env
afterEach ->
process.env = _.cloneDeep @originalProcessEnv
테스트에서 process.env
마치 사용하십시오 .
it 'does something based on an env var', ->
process.env.FOO = 'bar'
sinon을 사용하면 이와 같은 변수를 사용할 수 있습니다.
const myObj = {
example: 'oldValue',
};
sinon.stub(myObj, 'example').value('newValue');
myObj.example; // 'newValue'
이 예제는 sinon 문서 양식입니다. https://sinonjs.org/releases/v6.1.5/stubs/
이러한 지식으로 모든 환경 변수를 스텁 할 수 있습니다. 귀하의 경우에는 다음과 같이 보일 것입니다.
let stub = sinon.stub(process.env, 'FOO').value('bar');
참고 URL : https://stackoverflow.com/questions/24589021/how-to-stub-process-env-in-node-js
'ProgramingTip' 카테고리의 다른 글
모든 DOM 요소를 반복하는 가장 효율적인 방법? (0) | 2020.11.28 |
---|---|
Twitter 부트 유효성 3- 사용자 지정 글 리피 콘을 만들고 글 리피 "글꼴"에 추가 (0) | 2020.11.28 |
Python 3.4의 다중 처리 대 다중 스레딩 대 asyncio (0) | 2020.11.28 |
Android M의 가동 권한에서 거절하지 중지하고 중지를 어떻게 중지합니까? (0) | 2020.11.28 |
정수 접미사 J는 무엇을 의미합니까? (0) | 2020.11.28 |