In my cache sweeper I call expire_fragment and use some named route
helpers for its argument (like comments_path(…)).
This works fine in the app, but in my tests it’s causing problems,
because there’s no controller and comments_path returns nil. (See
method_missing in actionpack/lib/action_controller/caching/sweeper.rb
– that’s what’s returning nil in this case. I don’t understand why
that’s acceptable, but whatever.)
When my tests run Comment.create() directly, the sweeper gets called,
with no controller. How can I get to comments_path in this case?
On Sun, Oct 25, 2009 at 3:15 PM, Scott J.
[email protected]wrote:
When my tests run Comment.create() directly, the sweeper gets called,
with no controller. How can I get to comments_path in this case?
I do know if the most effective way to do things because caching is
turned
off by default within the test configuration. Next, where’s the code
for
the
test(s) with issues?
-Conrad
The test is trivial. Using rspec and machinist:
In user_spec.rb:
describe User do
it “should create a new instance given valid attributes” do
User.create!(User.plan)
end
end
And in blueprints.rb:
User.blueprint do
login { Sham.name }
email { “#{self.login}@foo.com” }
password { Sham.name }
password_confirmation { password}
end
I just realized that this works when run by itself. It only breaks
when run after other specs that use controllers with the cache_sweeper
directive. (I guess that causes the sweeper to get loaded and begin
observing the models.)