I have a helper page_title_default
in ApplicationHelper
:
def page_title_default(options = {})
t '.title', options
end
Now I want to test it like this:
describe '#page_title' do
subject { page_title }
it { ... }
end
end
This results in the following error:
Cannot use t(".title") shortcut because path is not available
According to this post it should be possible to stub the @virtual_path
variable like this:
helper.instance_variable_set(:@virtual_path, "admin.path.form")
But this doesn't seem to help: While I am able to stub it and then to call something like helper.t '.something'
directly in the test, it doesn't work for the translation helper which is used in the page_title_default
method (which still has @virtual_path
set to nil
). So it seems it's not the same instance of translation helper. But how can I find the page_title_default
method one's?
How about something like:
We're stubbing the "translated" string returned here to decouple the spec of
helper
from "real" translations, which may appear to be fragile for the test ofPageHelper
itself - the tests would fail every time you change the translations of ".title".On the other hand - if you change the key used, eg. from ".title" to ".default_title" it should fail, because it is change of behaviour.
I think the proper text displayed should be tested on different level of test (integration tests, to be specific). Please, check the following answer.
Hope that helps!