Как я могу протестировать представления в плагине направляющих?

Вы можете использовать многоугольные патчи для рисования четырехугольников, заполняющих пространство между двумя кривыми - единственная сложная точка - это генерация 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))

a sample plot [118 ]

Как видите, он не идеален , но, может быть, он достаточно хорош ...

5
задан James A. Rosen 5 November 2008 в 21:52
поделиться

4 ответа

Окончательный ответ:

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
1
ответ дан 15 December 2019 в 06:38
поделиться

контроль ActionView:: TestCase - http://api.rubyonrails.org/classes/ActionView/TestCase.html

Можно также использовать их для тестирования помощников, которых я нашел чрезвычайно полезными.

RSpec также имеет способ протестировать представления: http://rspec.info/documentation/rails/writing/views.html

Надежда, которая помогает!

2
ответ дан 15 December 2019 в 06:38
поделиться

Самое близкое, которое я получил,

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"}}

0
ответ дан 15 December 2019 в 06:38
поделиться

Я предлагаю, чтобы Вы посмотрели на код для resource_controller плагина. Я также видел подход в нескольких других плагинах.

Ответ прост в тестовом каталоге, Вы создаете приложение, которое использует Ваш плагин. Оттуда, Вы просто используете общие инструменты для тестирования представлений направляющих.

Тестовое приложение может быть чрезвычайно простым, если нет многих различных вариантов использования для Вашего плагина. В случае более сложных плагинов, как resource_controller, необходимо будет, вероятно, создать довольно много различных контроллеров и так далее.

Для обманывания тестового приложения в загрузку плагина самый простой путь состоит в том, чтобы создать ссылку на корень r_c каталога в сменном каталоге тестового приложения. Это не собирается работать над Windows, только Ose POSIX.

0
ответ дан 15 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: