나는 다음 돌아 오는 행동 작성자가 :어떻게 단위 썽크 작업과 테스트 mapDispatchToProps을에
export const keyDown = key => (dispatch, getState) => {
const { modifier } = getState().data;
dispatch({ type: KEYDOWN, key });
return handle(modifier, key); // Returns true or false
};
그리고 다음 연결된 기기 : 나는 dispatch
을 보장하기 위해 테스트를 작성하는 것을 시도하고있다
export const mapDispatchToProps = dispatch => ({
onKeyDown: e => {
if(e.target.tagName === "INPUT") return;
const handledKey = dispatch(keyDown(e.keyCode));
if(handledKey) {
e.preventDefault();
}
}
});
을 tagName
이 "INPUT"
이 아닌 경우 keyDown
작업으로 호출됩니다. 이것은 내 테스트입니다 :
import { spy } from "sinon";
import keycode from "keycodes";
import { mapDispatchToProps } from "./connected-component";
import { keyDown } from "./actions";
// Creates a simple Event stub...
const createEvent = (tag, keyCode) => ({
target: {
tagName: tag.toUpperCase()
},
preventDefault: spy(),
keyCode
});
it("Dispatches a keyDown event with the specified keyCode if the selected element is not an <input>",() => {
const dispatch = spy();
const keyCode = keycode("u");
mapDispatchToProps(dispatch).onKeyDown(createEvent("div", keyCode));
// This fails...
expect(dispatch).to.have.been.calledWith(keyDown(keycode));
});
아마도 이것은 화살표 기능을 사용하는 것과 관련이 있습니까? 내가 기대하는 함수 서명으로 파견을 호출 할 수있는 방법이 있습니까?
그래서 당신은 문자열 평등과 return 문 작동을 테스트 또는 개발자가 실수로 제거하지 않았다입니까? 하나님, 나는 대부분의 단위 테스트를 싫어한다. ( –
주로'dispatch'가 실제로 호출된다. 나는 액션 생성자를 디스패치하지 않고 호출한다 .keyDown 액션도 중요하므로'expect (dispatch). to.have.been.called'는 충분하지 않을 것입니다. – CodingIntrigue