Visual Studio не применяет изменения модуля Powershell при выполнении модульного теста Pester

Я создал «Проект модуля Powershell» в Visual Studio 2015 и написал несколько функций для этого модуля. Когда я вношу изменения в файл .psm1 и пытаюсь выполнить модульное тестирование этих изменений с помощью инфраструктуры Pester (файл .test.ps1), новые изменения не применяются во время теста. Это происходит в Visual Studio 2015 и Visual Studio 2017.

Я пробовал:

  • «Чистое решение», «Восстановить решение» и «Построить решение»
  • «Выгрузить проект» и «Обновить проект»
  • «Близкое решение» и «Открытое решение»

Единственное решение, которое я нашел до сих пор, - это повторно открыть IDE.

Откуда может возникнуть эта проблема и есть ли другое решение?


person dcfyg    schedule 09.06.2017    source источник


Ответы (1)


Когда вы изменяете модуль PowerShell, который уже был загружен, эти изменения не применяются автоматически к текущему сеансу PowerShell, потому что модуль был загружен в память (и это остается верным, даже если вы вручную запускаете Import-Module <modulename>, поскольку PowerShell видит модуль уже загружен и ничего не делает).

Обходной путь - либо сначала использовать Remove-Module, а затем перезагрузить его с помощью Import-Module, либо использовать Import-Module <modulename> -Force.

Вы можете добавить любое из этих решений в начало вашего тестового файла Pester, чтобы убедиться, что он всегда перезагружает модуль перед его тестированием.

person Mark Wragg    schedule 09.06.2017
comment
Спасибо! Теперь я понимаю, почему это происходит. Я решил использовать -Force, так как Remove-Module может столкнуться с проблемами при первом запуске (?). - person dcfyg; 09.06.2017
comment
Я думаю, что есть причина, по которой Remove-Module предпочтительнее, но я никогда не находил метод -Force, который мог бы вызвать у меня какие-либо проблемы. Вы можете сделать If (get-module <modulename>) { remove-module <modulename> }, чтобы остановить выдачу ошибки, если она еще не загружена. - person Mark Wragg; 09.06.2017