You're better of if you split your implementation> Have a
IRequestCreator factory class, which creates the instances of Class1,
class2, etc.

Your SendMessage method will have this non-generic signature:

public void SendMessage(IRequest reply);

Then, your previous code will look like:

var myRequest = requestCreator.Create(typeof(xxxx));
if (myRequest != null)
{
   SendMessage(myRequest);
}

Now, you can mock requestCreator, make it return null on certain
condition, and test that SendMessage was not called.

And another group of tests, to test the actual creator, and make sure
it returns actual instance or null, when needed.

Cheers

On Thu, Oct 25, 2012 at 4:30 AM, Steinkauz <[email protected]> wrote:
> So i have a mocked object which has generic method
> public virtual void SendMessage<T>(T reply) where T : IRequest
>
> I have multiple classes which implement all IRequest.
>
> In code i am testing method gets called multiple times like:
> switch(type)
> {
> case Class1:
> {
> SendMessage(new Class1() );
> break;
> }
>
> case Class2:
> {
> SendMessage(new Class2() );
> break;
> }
> case Class3:
> {
> SendMessage(new Class3() );
> break;
> }
>
> //and so on...
> }
> I want to make sure NONE of this methods is called.
>
> But if i make m_provider.AssertWasNotCalled(x =>
> x.SendMessage(Arg<IRequest>.Is.Anything), o => o.IgnoreArguments());
>
> This doesnt assert right.
>
> Because if i call SendMessage(new Class1()) and then
> m_provider.AssertWasCalled(x => x.SendMessage(Arg<IRequest>.Is.Anything), o
> => o.IgnoreArguments());
> this failes but this
> m_provider.AssertWasCalled(x => x.SendMessage(Arg<Class1>.Is.Anything>()), o
> => o.IgnoreArguments());
> passes
>
> IgnoreArguments here is overkill, i know
>
> So how do you assert none of the generic method instances was called?
>
> --
> You received this message because you are subscribed to the Google Groups
> "Rhino.Mocks" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/rhinomocks/-/x-12icZMwnYJ.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/rhinomocks?hl=en.



-- 
Svetoslav Milenov (Sunny)

Artificial Intelligence is no match for natural stupidity.

-- 
You received this message because you are subscribed to the Google Groups 
"Rhino.Mocks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rhinomocks?hl=en.

Reply via email to