Я тестирую некоторые скрипты, которые взаимодействуют с системными командами.Их логика зависит от кода возврата системных команд, то есть от значения $ ?.Итак, в качестве упрощенного примера сценарий может сказать:
def foo(command)
output=`#{command}`
if $?==0
'succeeded'
else
'failed'
end
end
Для того, чтобы иметь возможность правильно протестировать эти методы, я бы хотел иметь возможность заглушить вызов кавычки ядра и установить $?к произвольному значению, чтобы увидеть, получаю ли я соответствующее поведение из логики в методе после вызова обратной кавычки.$?переменная только для чтения, поэтому следующее не работает:
$? = some_number
Я могу сделать несколько простых вещей: например, установить $?в ноль или не ноль.Например, установит ли $?в 0 или 35212 (в любом случае, в моей системе), в зависимости от значения $?:
def fail_or_succeed(success)
if success
`echo foo`
else
`a-non-existent-command 2>&1`
end
end
Что я действительно хотел бы сделать, это установить $?до определенного значения (например, 3 или 122), а не просто ноль или произвольный ненулевой.Я не могу найти способ сделать это.(Если это имеет значение, я тестирую с использованием Test :: Unit и Mocha.)