Thanks for the reply, Tim. How would creating a mock by hand work for
a ValidationEventArgs object? Wouldn't it still run into the internal
constructor being hidden problem?

On Nov 12, 10:06 am, Tim Barcz <[email protected]> wrote:
> The constructors are internal so subclassing is hard because you can't call
> base.
>
> If this were me, I wouldn't use Rhino, I create a mock by hand to do what I
> want.  It's not too hard to do.
>
> On Wed, Nov 11, 2009 at 6:01 PM, TheMightyKumquat <[email protected]>wrote:
>
>
>
>
>
>
>
> > I'm looking to confirm that the following isn't possible.
>
> > I'm trying to unit test this method:
> > private void ValidationCallback(object sender, ValidationEventArgs
> > args)
> > {
> >   this._isValid = false;
> >   this._schemaErrors += args.Message + Environment.NewLine;
> > }
>
> > My problem is that ValidationEventArgs has no visible constructor, so
> > instantiating it for the test gives a compilation error. From the
> > compilation error, I worked out that the constructor should have two
> > parameters, a XmlSchemaException and an XmlSeverityType enum value.
>
> > I wondered whether it might be possible to stub or mock the
> > ValidationEventArgs class, so I coded
>
> > [TestMethod]
> > public void ValidationCallbackTest()
> > {
> >   string msg = "message";
> >   object [] argsForConstructor = {new XmlSchemaException(),
> > XmlSeverityType.Warning);
> >   ValidationEventArgs args = MockRepository.GenerateStub(typeof
> > (ValidationEventArgs), argsForConstructor);
> >   Expect.Call(args.Message).Return(msg);
> >   accessor.ValidationCallback(this, args); //accessor is a private
> > accessor object, instantiated when  test initializes
> >   Assert.IsFalse(accessor._isValid);
> >   assert.AreEqual(accessor._schemaErrors, msg + Environment.NewLine);
> > }
>
> > This test fails at runtime with the message
> > "System.NotSupportedException: Parent does not have a default
> > constructor. The default constructor must be explicitly defined."
>
> > I take it that my stub is still trying to call the constructor of the
> > actual class and is being denied access, or not finding a
> > parameterless construcor in the concrete class? I'm a bit hazy on
> > this: Ayende's notes say that "Rhino Mocks supports mocking classes as
> > well as interfaces. In fact, it can even mock classes that don't have
> > a default constructor!", so I don't know why I'm getting an error
> > saying that I need a default constructor.
>
> --
> Tim Barcz
> Microsoft C# MVP
> Microsoft 
> ASPInsiderhttp://timbarcz.devlicio.ushttp://www.twitter.com/timbarcz- Hide 
> quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
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