/ / Ензимен метод на повикване - javascript, реакция, ензим

Метод за повикване на ензим - javascript, реакция, ензим

Да кажем, че имам метод в моя компонент "Реакт":

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