2016-04-29 3 views
2

После установки PowerShell Tools for Visual Studio 2015 я создал новый Powershell Module Project, который создает MyProject.psd1 в MyProject.psm1 и MyProject.tests.ps1 файл.Запуск Pester Тесты внутри Visual Studio

MyProject.tests.ps1 файл выглядит следующим образом

Describe "Connect-Database" { 
    Context "When Connection To Database" { 
     $result = Connect-Database -host localhost -user admin -pass pass 
     It "Should Return True" { 
      $result | Should Be $True 
     } 
    } 
} 

Connect-База данных является функцией от MyProject.psm1 и экспортируется через MyProject.psd1

# Functions to export from this module 
FunctionsToExport = 'Connect-Database' 

Запуск консоли PowerShell и выполнения

Import-Module .\MyProject.psd1 
Invoke-Pester 

отлично работает и возвращает

Describing Connect-Database 
    Context When Connection To Database 
    [+] Should Return True 627ms 
Tests completed in 627ms 
Passed: 1 Failed: 0 Skipped: 0 Pending: 0 

Вот моя проблема: PowerShell Tools поставляется с тестовым адаптером и моими тестовыми показаниями в Test Explorer.

Но если я исполню его, он всегда терпит неудачу с The term Connect-Database is not recognized as cmdlet function script file or operable program

Даже добавление Import-Module .\MyProject.psd1 в файл MyProject.tests.ps1 не помогает. Любые идеи о том, как загрузить мой модуль перед запуском тестов?

ответ

4

Я добавил Get-Location | Write-Host в MyProject.tests.ps1 файл и выяснили, что рабочий каталог был C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE

Я не проверял, что в первую очередь потому, что я считал, что адаптер тест просто выполнить Invoke-Pester в рабочем каталог

в конце концов я решил это с

Split-Path $PSCommandPath | Set-Location 
Import-Module (".\" + (Split-Path -Leaf $PSCommandPath).Replace(".tests.ps1", ".psd1")) 
Смежные вопросы