Тот факт, что элементы sendto являются объектами файловой системы, является детальностью реализации, меню заполняется расширением оболочки sendto, и оно может быть расширено, чтобы включить другие вещи в следующую версию окон и т. д. Фактически, обработка папки sendto как только папка ярлыков, которую вы можете выполнить с помощью одного параметра, была проблематичной с Windows95 ( powertoys / shell toys )
Некоторые из элементов sendto не являются .lnk, а уникальным файлом расширения с зарегистрированным обработчиком drop (.DeskLink, .OtherFolder, .MAPIMail и т. д.)
Документированным способом вызова элемента sendto будет использование IContextMenu . Неуправляемым способом сделать это было бы вызов SHBindToParent на объект, который вы хотите эмулировать действие sendto (запрос для IID_IShellFolder). Затем вызовите IShellFolder :: GetUIObjectOf и попросите IID_IContextMenu, тогда вы можете вызовите IContextMenu :: QueryContextMenu , чтобы заполнить HMENU, вам нужно будет найти подменю sendto (я думаю, что он вернет sendto в качестве своего глагола, если вы спросите его с помощью IContextMenu :: GetCommandString). может затем перечислить подменю с функциями меню winapi и / или IContextMenu :: GetCommandString, чтобы найти элемент, который вы хотите вызвать, затем вызовите IContextMenu :: InvokeCommand
email-spec выглядит как хорошая библиотека
Что именно вы хотите проверить?
Хотите ли вы проверить, действительно ли электронное письмо действительно отправлено?
Я не рекомендую его, поскольку оно замедлит ваш тест и это действительно зависит от машины, которую вы используете для запуска ваших тестов (сетевое соединение, SMTP-сервер).
Что я обычно делаю, так это проверяю, правильно ли выполняется действие контроллера / модели / грабли, отправляющее электронные письма (то есть, без ошибок, я заглушаю последний вызов отправки). Я также проверяю, правильно ли указаны тело, заголовок и получатели письма.
Редактировать:
Не имеет прямого отношения к тестированию, но я только что прочитал эту статью .
Мне нравится его точка зрения об использовании модели для отправки электронных писем. Итак, чтобы объяснить немного подробнее:
Я бы использовал контроллер для настройки переменных вида, таких как @body, @title, @recipient.
Поэтому я бы проверил, что при заданных правильных параметрах почтовый шаблон (который является представлением) корректно отображается. Это было бы ошибкой, с моей точки зрения.
Я обновлю этот пост примером, когда вернусь домой позже сегодня.