На самом деле ошибка function GetKey() should be called after Open()
вызывается keyboard.GetKey()
.Кажется, GetKey()
думает, что Open()
никогда не вызывали.Теперь, в вашем примере, мы видим keyboard.Open()
- но Open()
может фактически вернуть error
, который вы, кажется, игнорируете.Поэтому вам следует проверить, в чем заключается ошибка, и устранить ее в своем коде.
Однако это на самом деле не решает вашу проблему - потому что вы, вероятно, не хотите нажимать клавишу при каждом запуске модульных тестов.(особенно не в вашей среде CI).
Как вы сказали, я бы издевался над библиотекой клавиатуры.То есть: написать интерфейс, который делает то, что вам нужно, написать реализацию этого интерфейса, которая просто вызывает библиотеку keyboard
, и написать фиктивную реализацию, чтобы помочь в тестировании.Этот макет может затем напрямую вернуться из GetKey()
(или как вы его называете в ваш интерфейс).У более продвинутого макета может быть некоторая конфигурация, чтобы он мог возвращаться напрямую, немного спать или никогда не возвращаться.
Я создал быстрый пример того, как это будет работать, см. https://gist.github.com/jorygeerts/e887856cc15b64cb9681639cd83c4a37. Обратите внимание, что для ваших тестовВы, вероятно, также хотите ввести что-то, чтобы высмеивать os.Exit()
и, возможно, также ваш PrintAndLogInfo
.