2014-12-28 2 views
-2

Как выполнить единичный тест по следующему методу печати call get_list()?Ruby теперь может быть модульным тестом, выполненным по методу печати

С assert_equal("["apple", "orange", "pear"]",@list.get_list()) результатом является nil.

@list = ["apple", "orange", "pear"] 

def get_list() 
    i = 0 
    while (i < list.size()) 
     puts list[i] 
     i = i + 1 
    end 
end 

Пожалуйста, может кто-нибудь дать мне чаевые пожалуйста

+0

В вашем методе, я думаю, вы хотели использовать '@ list' вместо' list' – Humza

+0

Функция 'get_list' должна возвращать список. Метод печати следует называть 'print_list'. У вашего утверждения есть синтаксическая ошибка ('' ["apple", "orange", "pear"] "' не имеет смысла. Ваш 'get_list' печатает' "apple \ norange \ npear \ n" '- Что вы хотите _print_ или быть протестированным на самом деле?) – knut

ответ

1

Kernel#puts всегда возвращает ноль. Вероятно, вы, скорее всего, захотите использовать Kernel#p. Например:

@list = %w[apple orange pear] 
def get_list 
    @list.each { |item| p item } 
end 

В зависимости от того, что вы думаете #get_list должен вернуться, возможно, потребуется реорганизовать способ дополнительно. Просто убедитесь, что вы возвращаете что-то отличное от нуля, явно или неявно.

Смежные вопросы