Tôi mới đến minitest và vẫn còn mới với ruby và thực sự mệt mỏi vì cố gắng google câu hỏi này mà không có kết quả. Tôi thực sự biết ơn sự giúp đỡ:Cú pháp assert_output của Ruby minitest
Cú pháp chính xác của assert_output trong minitest ruby là gì?
Tất cả những gì tôi tìm thấy trên github hoặc ở nơi khác dường như sử dụng dấu ngoặc đơn. Tuy nhiên, tôi nhận được một thông báo lỗi khi tôi không sử dụng một khối với assert_output, mà có ý nghĩa như định nghĩa của phương pháp này có chứa một tuyên bố sản lượng.
Nhưng tôi không thể làm cho nó hoạt động, bất cứ điều gì tôi cố gắng.
testclass.rb
class TestClass
def output
puts 'hey'
end
end
test_test.rb
require 'minitest/spec'
require 'minitest/autorun'
require_relative 'testclass'
class TestTestClass < MiniTest::Unit::TestCase
def setup
@test = TestClass.new
end
def output_produces_output
assert_output(stdout = 'hey') { @test.output}
end
end
Những gì tôi nhận được là:
kiểm tra hoàn thành trong 0.000000s, NaN kiểm tra/s, khẳng định NaN
0 kiểm tra, 0 xác nhận, 0 lỗi, 0 lỗi, 0 bỏ qua
Tôi đang làm gì sai? Nó phải là một cái gì đó hoàn toàn rõ ràng, nhưng tôi không thể tìm ra. Cảm ơn sự giúp đỡ của bạn.
CẢM ƠN !! Vì vậy, nó đã được tên phương pháp không bắt đầu với 'thử nghiệm' và tôi đã đặt câu hỏi cú pháp. Cảm ơn bạn đã khuyên tôi nên tìm kiếm lâu hơn trên câu hỏi sai. – enahel
Một câu hỏi nữa: Ví dụ hoạt động theo cách bạn đã viết nó với regex, nó cũng hoạt động theo cách tôi đã viết nó với stdout = 'hey'. Nó không hoạt động với chỉ assert_output ('hey') mà không có 'stdout ='. Tại sao vậy? – enahel
Và - cuối cùng - tại sao tôi có thể có nhiều xác nhận hơn là chạy trong minitest? Trong ví dụ thực tế của tôi có một thử nghiệm duy nhất, nó nói "1 chạy, 2 xác nhận". (BTW Tôi có thể chặn đầu ra stdout thực tế của phương thức trong khi thử nghiệm để có dấu nhắc lệnh dễ đọc hơn không?) – enahel