Попробуйте следующий код (я его не тестировал), но в основном используйте .simulate()
непосредственно на оболочке и используйте .toHaveBeenCalled()
.
it('should test Button component', () => {
it('shoud test click event', () => {
const mockCallBack = jest.fn();
const button = shallow((<Button onClick={mockCallBack}>1</Button>));
button.simulate('click');
expect(mockCallBack).toHaveBeenCalled()
});
});
Во многих случаях довольно удобно иметь поле id. Я предпочитаю, чтобы мой был автоинкрементным (как показано ниже). Я всегда нахожу новые применения для поля id:)
Когда приходит время присоединить данные к адаптеру, я предпочитаю использовать псевдоним таблицы для запроса поля идентификатора как _id
. Пример: SELECT id _id, msg from message order by id
. Таким образом, адаптер видит поле под названием _id
, и все счастливы.
Вот пример того, как я определяю свои таблицы:
CREATE TABLE message (_id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp INTEGER, tripID TEXT, msg TEXT);
Почему бы не использовать _ROWID_ ?
SQLite обеспечивает это в любом случае для каждой строки, так что вы можете просто присвоить ему псевдоним _id в своем операторе select.
Если вы определили свой столбец _id как автоинкрементное целое число, это фактически псевдоним для столбца ROWID, который SQLite предоставляет по умолчанию ( https://www.sqlite.org/lang_createtable.html#rowid ) ,
Ваше заявление о создании должно иметь форму ...
CREATE TABLE t(_id INTEGER PRIMARY KEY ASC, y, z);
Чтобы доказать это работает ...
UPDATE t SET _id=22 WHERE _id=11;
затем
SELECT ROWID, _id FROM t;
и вы обнаружите, что _id
и ROWID
имеют одинаковое значение.
Обратите внимание, что если вы используете DESC в CREATE, создается новый столбец, и ROWID
не является псевдонимом.
Конечно, если вы создаете свой собственный виджет пользовательского интерфейса и собственный адаптер, вам не нужно называть свой первичный ключ как «_id». Это может быть любое имя, которое вы хотите. Но вы будете нести ответственность за управление своими коллекциями виджетов пользовательского интерфейса и связывание их с правой строкой в вашей базе данных. «_id» полезен только для ListView, как указал Брэд.
_id полезен при использовании улучшенных адаптеров, использующих Cursor (например, ResourceCursorAdapter). Он используется этими адаптерами для предоставления идентификатора, который может использоваться для ссылки на конкретную строку в таблице, которая связывает элемент в том, для чего используется адаптер (например, строка в ListView).
Это не обязательно, если вы не собираетесь использовать классы, которым нужен столбец _id в курсоре, и вы также можете использовать «как _id», чтобы другой столбец выглядел так, как будто он называется _id в вашем курсоре.