JS TestUtils tepki:Testi Jest bir form ve 3 radyo düğmeleri aşağıdaki (sahte isim) gibi olan bir form var
<form className="myForm" onSubmit={this.done}>
<input className="myRadio" checked={ŧrue} type="radio" name="myRadio" onChange={this.change} value="value1"
<input className="myRadio" type="radio" name="myRadio" onChange={this.change} value="value2"
<input className="myRadio" type="radio" name="myRadio" onChange={this.change} value="value3"
<input type="submit" className="submit" />
</form>
Ve Değiştiğinde ve onSubmit etkinliklerini test etmek için çalışırken çok zorlanıyorum .
inputs = TestUtils.scryRenderedDOMComponentsWithClass(MyComponentRendered, 'myRadio');
myForm = TestUtils.findRenderedDOMComponentWithClass(MyComponentRendered, 'myForm');
Ben böyle bir test var: çağrılmalıdır fonksiyonu (MyComponent.change) dışında çalışan
it("changes the checked state when clicked", function() {
MyComponent.change = jest.genMockFunction();
expect(inputs[0].getDOMNode().checked).toBe(true);
TestUtils.Simulate.change(inputs[1], {target: {value: 'value2'}});
expect(inputs[0].getDOMNode().checked).toBe(false);
expect(inputs[1].getDOMNode().checked).toBe(true);
expect(inputs[2].getDOMNode().checked).toBe(false);
expect(MyComponent.change).toBeCalled(); //Fails
expect(MyComponent.change.mock.calls.length).toBe(1); //Fails too
});
ama değil.
Ben de onSubmit için bir test var:
it("saves on submit", function()
MyComponent.done = jest.genMockFunction();
MyComponent.insideDone = jest.genMockFunction();
TestUtils.Simulate.submit(myForm);
expect(MyComponent.done).toBeCalled(); //Fails
expect(MyComponent.insideDone).toBeCalled(); //Success
});
Uyarı: MyComponent.insideDone 'done' işlevi tarafından çağrılan bir işlevdir.
Bu da başarısız. Buradaki problemin, olayları doğru bir şekilde simüle etmemem olduğuna eminim. Ancak, React'tan Jest ve TestUtils kullanarak bunun bir örneğini bulamadım.
Tıklatma olayını kullanarak bir form göndermeyi denedim, ancak hiçbir yerde sona ermedim, ancak form öğesinin kendisinin ele geçirilmesine yardımcı olan ve TestUtils.Simulate.submit (form) – nimgrg
çağırılıyordu. Değişiklik işlevine gelince, muhtemelen MyComponent öğesini kontrol edecektim. mock işlevinin çağrıldığını kontrol etmek için change.mock.calls.length 1'e eşittir. – nimgrg
@nimgrg, bu mock.calls.length da başarısız oluyor. Cevabımı güncelledim. Son örnekte olduğu gibi, "bitti" işlevi başka bir işlevi çağırıyor ... ve o da çağrıldığı bildirildi. –