aşağıdaki Redux eylem yaratıcısı vardır:nasıl ünite thunk eylem ile deney mapDispatchToProps için
export const keyDown = key => (dispatch, getState) => {
const { modifier } = getState().data;
dispatch({ type: KEYDOWN, key });
return handle(modifier, key); // Returns true or false
};
Ve aşağıdaki bağlı bileşen: Ben dispatch
sağlamak için bir test yazmaya çalışıyorum
export const mapDispatchToProps = dispatch => ({
onKeyDown: e => {
if(e.target.tagName === "INPUT") return;
const handledKey = dispatch(keyDown(e.keyCode));
if(handledKey) {
e.preventDefault();
}
}
});
tagName
, "INPUT"
dışında bir şey olduğunda keyDown
eylemiyle çağrılır. Tahminen bu ok işlevlerini kullanarak bir ilgisi olduğunu
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));
});
: Bu benim sınavım? Sevkıyatın beklediğim fonksiyon imzası ile çağrıldığından emin olmanın herhangi bir yolu var mı?
Yani o dize eşitliği ve Dönüş ifadesi çalışmalarını test ya da bir geliştirici yanlışlıkla kaldırmak olmadığını edilir? Tanrım, çoğu birim testinden hoşlanmıyorum :( –
Öncelikle 'gönderme 'aslında çağrılır. Çoğu zaman eylem yaratıcısını gönderime geçmeden çağırırım.Konuşma eyleminin de önemli olduğunu, yani beklemenin (gönderim) olduğunu kontrol ediyorum. to.have.been.called' yeterli olmaz düşünmüyorum – CodingIntrigue