Problem z mock_model w tescie helpera

witam
mam następujący helper, z grubsza zwraca on typowy breadcrumb, jaki można spotkać na wielu stronach, kod helpera

[code=ruby]module FoldersHelper

def folder_breadcrumbs
folder = @current_folder
bc = []
until folder.nil? do
bc << (folder == @current_folder ? folder.name : link_to(folder.name, project_folder_path(@current_project, folder)))
folder = folder.parent_folder
end
bc << link_to(@current_project, project_uploads_path(@current_project))
bc.reverse.join(" » ").html_safe
end

end[/code]
rspec wygląda tak

[code=ruby]require ‘spec_helper’

describe FoldersHelper do

before do
@current_project = mock_model(“Project”, :name => “Pulp Fiction”)
@current_folder = mock_model(“Folder”, :name => “Marcellus Wallace”, :parent_folder => nil)
end

describe “folder_breadcrumbs” do

before(:each) do
  @result = folder_breadcrumbs
end

it "should return proper breadcrumb" do
  @result.should match /<a href=\"\/projects\/pulp-fiction\/uploads\">Pulp Fiction<\/a> » Marcellus Wallace/
end

end

end[/code]
dostaje natomiast taki błąd, nie wiem dlaczego te mocki nie zwracają poprawnego name

Failure/Error: @result.should match /<a href="/projects/pulp-fiction/uploads">Pulp Fiction</a> » Marcellus Wallace/
expected “<a href=”/projects/1001/uploads">Project_#RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x7f0f3f3cbe78 » Marcellus Wallace" to match /<a href="/projects/pulp-fiction/uploads">Pulp Fiction</a> » Marcellus Wallace/

bc << link_to(@current_project, project_uploads_path(@current_project))

mock nie wie ze masz (bo wyglada na to ze masz?) swoje to_param i to_s w modelach.

tak mam. myślałem że to double() nie wie takich rzeczy i trzeba mu je zadeklarowac, mock też ? jak to w takim razie ustawić ?

afaik double na to_param chyba sie pogubi, mock_model zachowuje sie jak standardowy model active record, a stub_model stworzy juz instancje uzywajac twojego kodu (z tym ze nie pozwoli na zapis do bazy).

stub_model(Project, :name => "Pulp Fiction")

a jesli nie chcesz polegac na modelu to mozesz zrobic cos w stylu

costam.stub(:to_s) {"Pulp Fiction"} costam.stub(:to_param) {"pulp-fiction"}

z double stwierdziłem że chyba nie tędy droga, gdy przyszło do stubowania metody == żeby zaczęło działać :slight_smile: ale działało.
chciałbym właśnie mieć dostęp do metod ale nie tykać bazy, bo to w tym przypadku zbędne. dzięki, wypróbuje