Dưới đây là phiên bản mã của dmcnally cho phép không có đối số nào được chuyển, thực hiện công việc "nên use_layout" và "should_not use_layout" (để khẳng định rằng bộ điều khiển đang sử dụng bố cục bất kỳ hoặc bố cục tương ứng) mong đợi chỉ thứ hai là hữu ích khi bạn cần cụ thể hơn nếu nó là sử dụng một layout):
class UseLayout
def initialize(expected = nil)
if expected.nil?
@expected = nil
else
@expected = 'layouts/' + expected
end
end
def matches?(controller)
@actual = controller.layout
#@actual.equal?(@expected)
if @expected.nil?
@actual
else
@actual == @expected
end
end
def failure_message
if @expected.nil?
return 'use_layout expected a layout to be used, but none was', 'any', @actual
else
return "use_layout expected #{@expected.inspect}, got #{@actual.inspect}", @expected, @actual
end
end
def negative_failure_message
if @expected.nil?
return "use_layout expected no layout to be used, but #{@actual.inspect} found", 'any', @actual
else
return "use_layout expected #{@expected.inspect} not to equal #{@actual.inspect}", @expected, @actual
end
end
end
def use_layout(expected = nil)
UseLayout.new(expected)
end
Nguồn
2010-03-20 18:41:43
Đó là cùng một mà tôi tìm thấy, và từ các thử nghiệm của tôi nó dường như không hoạt động vì không có thuộc tính bố trí trên phản hồi (hoặc bộ điều khiển) từ những gì tôi có thể thấy. – DEfusion
Ah có vẻ như có một phương pháp bố trí, nhưng phải mất một số đối số. Tôi sẽ suy nghĩ về giải pháp có thể là gì. – Otto
Trên Rails 2.2.2 hiện tại và hoạt động tốt – DEfusion