Краткое описание:
Я пытаюсь использовать Пестера, чтобы высмеивать содержимое файла, а затем перебирать каждую строку и каждый символ этих фальшивых данных, но я получаюэта ошибка: «индекс массива оценивается как ноль».при попытке доступа к символам строки.
Справочная информация:
У меня есть функция Powershell, которая читает содержимое файла global.asax.cs.
Пример файла, из которого я читаю:
namespace MockData
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true;
}
}
}
Затем моя функция будет использовать Get-Content для чтения файла и перебора каждой строки и каждого символа.Пример (упрощенная версия, переменная $ index в этом примере выглядит неприятно, но она необходима в реальном коде):
$contents = Get-Content $filePath
$index = 0
$bracketCounter = 0
Do {
foreach($char in $contents[$index].ToCharArray()) {
if($char -eq "{") {
$bracketCounter++
}
elseif ($char -eq "}") {
$bracketCounter--
}
}
$index++
} While ($bracketCounter -gt 0)
Теперь в Pester это код для моего теста:
It "check for success" {
Mock Get-Content {
$content = "namespace MockData
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true;
}
}
}"
return $content
} -ParameterFilter { $Path -like "*asax*"}
[string[]]$errors = MyPowershellFile
$errors | should BeNullOrEmpty
}
Ожидаемые результаты:
Мои ожидаемые результаты состоят в том, что тест Пестера итерирует содержимое макета так же, как и с реальным содержимым.
Ошибка отПестер при вызове этой строки происходит:
foreach($char in $contents[$index].ToCharArray())
Я получаю «RuntimeException: операция индекса не выполнена; индекс массива оценивается как ноль».
Я думаю, это происходит потому, что в реальной функцииПервый элемент $ contents - это первая строка файла.
$contents[0] = namespace MockData
В функции Pester первым элементом $ contents является первый символ.
$contents[0] = n
Есть ли хороший способ обойти это?У меня заканчиваются идеи.
Заранее спасибо всем, кто читает этот вопрос.