On 2010-01-16, at 10:31 PM, Tomas Doran wrote:

> I tend to just use Moose directly to construct mock classes for me:

Things are improving, t0m. I tried

use Class::MOP;
use Class::MOP::Class;
my $meta_refreshes = Class::MOP::Class->create('ARMAdmin::Model::Refreshes');
$meta_refreshes->add_method('get_profiles' => sub { die("Failed to get 
profiles"); });

Then I start the app in the test framework. I'm just after getting the 
get_profiles mocked method called here, later I want it to return values I can 
test in the generated page. 

However, Catalyst then calls:

Catalyst::Utils::ensure_class_loaded( $component, { ignore_loaded => 1 } );

The ignore_loaded seems to bypass everything and overwrite my newly mocked 
class just when I need it. I get the method redefined, and a warning about it. 
The comment in the code here says this is needed for some Schema::Loader 
functionality dependent on loading even when the class exists. Doesn't this 
make mocking impossible?

The ignore_loaded => 1 setting seems a somewhat heavy assumption to make for 
all components. 

Can anyone offer a way around this that doesn't involve too much patching?

All the best
Stuart
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to