Вы можете использовать многоугольные патчи для рисования четырехугольников, заполняющих пространство между двумя кривыми - единственная сложная точка - это генерация 5 точек, которые определяют многоугольник, но (ab) с помощью zip
это можно сделать ... также вам нужно знать, как разместить полигоны на графике, но это легко, если вы знаете matplotlib.collections.PatchCollection
и ax.add_collection
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
x1 = np.linspace(0,6,21) ; y1 = np.sin(x1)
x2 = x1+0.28 ; y2 = np.cos(x2)
fig, ax = plt.subplots()
ax.plot(x1, y1, x2, y2)
patches = [Polygon(poly) for poly in (
[p0,p1,p2,p3,p0] for p0,p1,p2,p3 in
zip(zip(x1,y1),zip(x1[1:],y1[1:]),zip(x2[1:],y2[1:]),zip(x2,y2)))
ax.add_collection(PatchCollection(patches, alpha=0.6))
Как видите, он не идеален , но, может быть, он достаточно хорош ...
Окончательный ответ:
require 'action_controller'
require 'active_support'
require 'action_pack'
require 'action_view'
require 'action_controller/test_case'
class StubController < ActionController::Base
helper MyHelper
append_view_path '...'
attr_accessor :thing
def my_partial
render :partial => '/my_partial', :locals => { :thing => thing }
end
def rescue_action(e) raise e end;
end
class MyTestCase < ActionController::TestCase
self.controller_class = StubController
def setup
@controller.thing = ...
get :my_partial
assert ...
end
end
контроль ActionView:: TestCase - http://api.rubyonrails.org/classes/ActionView/TestCase.html
Можно также использовать их для тестирования помощников, которых я нашел чрезвычайно полезными.
RSpec также имеет способ протестировать представления: http://rspec.info/documentation/rails/writing/views.html
Надежда, которая помогает!
Самое близкое, которое я получил,
require 'action_controller'
require 'active_support'
require 'action_pack'
require 'action_view'
require 'action_controller/test_case'
class StubController < ActionController::Base
append_view_path '...'
def _renderizer; render params[:args]; end
def rescue_action(e) raise e end;
end
class MyTest < ActionController::TestCase
self.controller_class = StubController
def render(args); get :_renderizer, :args => args; end
def test_xxx
render :partial => ...
end
end
Но я получаю ошибку маршрутизации теперь: ActionController::RoutingError: No route matches {:action=>"_renderizer", :controller=>"", :args=>{:locals=>{:...}, :partial=>"/my_partial"}}
Я предлагаю, чтобы Вы посмотрели на код для resource_controller плагина. Я также видел подход в нескольких других плагинах.
Ответ прост в тестовом каталоге, Вы создаете приложение, которое использует Ваш плагин. Оттуда, Вы просто используете общие инструменты для тестирования представлений направляющих.
Тестовое приложение может быть чрезвычайно простым, если нет многих различных вариантов использования для Вашего плагина. В случае более сложных плагинов, как resource_controller, необходимо будет, вероятно, создать довольно много различных контроллеров и так далее.
Для обманывания тестового приложения в загрузку плагина самый простой путь состоит в том, чтобы создать ссылку на корень r_c каталога в сменном каталоге тестового приложения. Это не собирается работать над Windows, только Ose POSIX.