Да кажем, че имам метод в моя компонент "Реакт":
doSomething() {
// method uses this.props and this.state
}
Искам да тествам този метод за различни подпори и състояния, които са определени. Как мога да го нарека? MyClass.prototype.doSomething
ще се обади на функцията, но след това this.props
и this.state
не са зададени.
Отговори:
0 за отговор № 1Бихте могли просто apply
стойността на this
които искате да използвате:
// MyClass.prototype.doSomething() becomes
var mockThis = {
props: { coolProp: "coolValue1" },
state: { coolStateKey: "coolValue2" }
};
MyClass.prototype.doSomething.apply(mockThis);`
2 за отговор № 2
Можете да използвате ензим "s instance
функция, за да получите инстанция на рендерирания компонент и да се обадите върху него.
const wrapper = shallow(<MyClass {...props} />)
wrapper.instance().doSomething()
0 за отговор № 3
Нека да продължим при предположението, че вашият doSomething () метод е increaseByOne (), който просто добавя +1
describe("Calculator", () => {
it("should update state by 1 on increaseByOne()", () => {
const wrapper = shallow(<Calculator />);
expect(wrapper.instance().state().score).toBe(0);
wrapper.instance().increaseByOne();
expect(wrapper.instance().state().score).toBe(1);
});
});
За да научите повече, можете да проверите документацията състояние () и Instance () docs