Answer the question
In order to leave comments, you need to log in
How to check the call of the store method with a unit test?
Good afternoon, I'm trying to check the output of the method when clicking on a div.
import * as React from 'react';
import {observer} from 'mobx-react';
import {mount} from 'enzyme';
import {instance, mock, verify, when} from 'ts-mockito';
class TestStore {
onClick = () => {};
}
interface Props {
store: any;
}
@observer
export class Test extends React.Component<Props, any> {
render() {
return (
<div
className={'test'}
onClick={this.props.store.onClick}/>
);
}
}
describe('onclick test', () => {
let testStoreMocked: any;
let testStoreInst: any;
let testElem: any;
beforeEach(() => {
testStoreMocked = mock(TestStore);
testStoreInst = instance(testStoreMocked);
testElem = mount<Test>(<Test
store={testStoreInst}
/>);
});
test('test', () => {
when(testStoreMocked.onClick).thenReturn();
console.log(testElem.find('div.test').html());
testElem.find('div.test').simulate('click');
verify(testStoreMocked.onClick()).once();
});
});
Expected "onClick()" to be called 1 time(s). But has been called 0 time(s).
50 | console.log(testElem.find('div.test').html());
51 | testElem.find('div.test').simulate('click');
> 52 | verify(testStoreMocked.onClick()).once();
| ^
53 | });
54 | });
import * as React from 'react';
import {observer} from 'mobx-react';
import {mount} from 'enzyme';
import {instance, mock, verify, when} from 'ts-mockito';
class TestStore {
onClick = () => {};
}
interface Props {
store: any;
}
@observer
export class Test extends React.Component<Props, any> {
onClick = () => {
this.props.store.onClick();
};
render() {
return (
<div
className={'test'}
onClick={this.onClick}/>
);
}
}
describe('onclick test', () => {
let testStoreMocked: any;
let testStoreInst: any;
let testElem: any;
beforeEach(() => {
testStoreMocked = mock(TestStore);
testStoreInst = instance(testStoreMocked);
testElem = mount<Test>(<Test
store={testStoreInst}
/>);
});
test('test', () => {
when(testStoreMocked.onClick).thenReturn();
console.log(testElem.find('div.test').html());
testElem.find('div.test').simulate('click');
verify(testStoreMocked.onClick()).once();
});
});
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question