Mocking behavior between clr types

As I have been working more and more with testing C# via IronRuby &
Rspec, I
have found myself wanting to use more and more of the rspec framework
testing. I have also found problems that I am not sure how to work

For instance lets say I have two c# classes:

public class Foo
private Bar _bar;

public Foo(Bar someBar)
this._bar = someBar;

public int GetBarCount()
return this._bar.Count;


public class Bar
private int _count = 0;

public Count
get { return _count;}

in my spec test I want to do something like this:

b =

f =
f.GetBarCount(),should == 100

The problem is that because I am stubbing the Bar instance via the dlr,
CLR call on f never sees the stub and just returns 0.

Is there any way to make this work? I was wondering if I could maybe
my Foo instance a proxy or mock itself and see if that would let the
calls work… but I haven’t had any luck :frowning:


you can use caricature to solve that problem

gem install caricature

for rspec you do

require ‘caricature’

Spec::Runner.configure do |config|
config.mock_with Caricature::RSpecAdapter
config.include Caricature::RSpecMatchers

But it works slightly different as it won’t verify unless you tell it to
it has no mock or stub knowledge but works from the assumption you want
stub unless you add a verify call.

the bacon integration specs show off all the combinations.

Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
Author of IronRuby in Action (