Bir uygulamayı test kodu için ortam değişkenlerinden izole etmenin bir yolu var mı?


0

Windows'ta DLLsistem PATHdeğişkeninde bulunan dosyaları kullanan bir uygulama geliştiriyorum . Bunlar DLLler benim gözümde olan PATHbenim geliştirme ortamı için. Ancak uygulamanın kendisi, kendi bağımlılıklarıyla birlikte gelen taşınabilir. Ortam değişkenlerini bir uygulamadan / işlemden gizlemenin bir yolu var mı, böylece kodumu genel değişkenleri değiştirmek zorunda kalmadan taşınabilirlik açısından test edebiliyorum?


Test amacıyla başka bir kullanıcı oluşturabilir, diğer hesaba giriş yapabilir ve çalışıp çalışmadığını deneyebilirsiniz. Başka bir tam çözüm, yeni bir pencere kurulumuna sahip sanal bir makine oluşturmak ve orada her şeyi test etmek olacaktır
fernando.reyes

1
Microsoft'un ücretsiz Windows VM'lerinden birini kullanın
Ramhound

dev ortamınızın uygun olması koşuluyla muhtemelen en iyi çözüm alay ediyor: stackoverflow.com/questions/2665812/what-is-mocking
Frank Thomas

Yanıtlar:


1

Bir yarasa / cmd dosyası oluşturun ve PATH öğesini geçersiz kılın, ardından uygulamanızı aynı yarasa / cmd dosyasından alın

@echo off

Path=C:\TestPath

REM test it that is was overridden 
echo %Path%

REM Lunch your app below
c:\path\to\your\app.exe

0

Alex'in cevabı yardımcı oldu. Bunu, ekleyebileceğim bir PowerShell işlevine dönüştürdüm, $profileböylece her zaman kullanılabilir:

function sandbox {
    Write-Output "$args"
    $tempPATH = $env:PATH
    $env:PATH = ""
    if ("$args"[0] -eq '"') { iex "& $args" }
    else { iex "$args" }
    $env:PATH = $tempPATH
}

Şimdi, ne zaman arasam sandbox SOME_COMMAND, işlev boşalır PATH, komutu çalıştırır ve değişkeni tekrar geri yükler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.