When I make this struct a class(
private class _commandLineArgument), everything works as expected.  Anybody can explain this behavior?  Anyway to make it work without making it a class.  Thank you.public abstract class ConsoleBase{        private struct _commandLineArgument        {            public string Name { get; set; }            public string Description { get; set; }            public bool IsRequired { get; set; }            public string Value { get; set; }            public bool Found { get; set; }        }}Type argType = Type.GetType( "Utilities.ConsoleBase+_commandLineArgument" );Mock.NonPublic.Arrange<bool>( argType, "Found" ).Returns(true);8 Answers, 1 is accepted
Here's a simplified scenario that still doesn't work as is but works when struct is converted to a class:
public struct commandLineArgument{    public string Name { get; set; }    public string Description { get; set; }    public bool IsRequired { get; set; }    public string Value { get; set; }    public bool Found { get; set; }}    [Test]    public void Test()    {        commandLineArgument c = Mock.Create<commandLineArgument>();        Mock.Arrange( () => c.Found ).Returns( true );        Assert.IsTrue( c.Found );    }Unfortunately, mocking members from struct is not working properly. However, we found the issue and will try our best to include a fix for it in the upcoming SP release.
In the meantime, you can follow the task here:
http://www.telerik.com/support/pits.aspx#/public/justmock/12182 
Kind Regards
Ricky 
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
I have sent you an internal build in ticket #572988. Please check it out.
Ricky
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
public struct commandLineArgument{    public string Name { get; set; }    public string Description { get; set; }    public bool IsRequired { get; set; }    public string Value { get; set; }    public bool Found { get; set; }}      [Test]    public void Test()    {        commandLineArgument c = Mock.Create<commandLineArgument>();        Mock.Arrange( () => c.Found ).Returns( true );        Assert.IsTrue( c.Found );    }But the original scenario still throws the "Argument types do not match" error:
public abstract class ConsoleBase{        private struct _commandLineArgument        {            public string Name { get; set; }            public string Description { get; set; }            public bool IsRequired { get; set; }            public string Value { get; set; }            public bool Found { get; set; }        }}  Type argType = Type.GetType( "Utilities.ConsoleBase+_commandLineArgument" );Mock.NonPublic.Arrange<bool>( argType, "Found" ).Returns(true);Type argType = Type.GetType( "Cmtm.Utilities.ConsoleBase+_commandLineArgument" );var ca = Mock.Create( argType, Constructor.NotMocked, Behavior.CallOriginal );Mock.NonPublic.Arrange<bool>( ca, "Found" ).Returns( true );I get "Attempt by method '_commandLineArgument_Interceptor_1d052085ba9c4ad3bc1b06c9b920f939.Intercept(System.String, _commandLineArgument, Boolean ByRef)' to access type 'Cmtm.Utilities.ConsoleBase+_commandLineArgument' failed." When struct is used in the code being tested.
Again both scenarios work when struct is made into a class. Looks like nested structs are still not supported.
Thanks again for contacting us. However, this is not an issue with nested structure. I changed _commandLineArgument as public and it working as expected:
ConsoleBase._commandLineArgument c = Mock.Create<ConsoleBase._commandLineArgument>();Mock.Arrange(() => c.Found).Returns(true);Assert.IsTrue(c.Found);After doing a bit more debugging, I found that you are trying to mock a non-static property as static. Therefore, I changed the test in the following way and now it is working as expected as well:
[Test]public void Test(){    Type argType = typeof(ConsoleBase).GetNestedType("_commandLineArgument");    var target = Activator.CreateInstance(argType);    Mock.NonPublic.Arrange<bool>(target, "Found").Returns(true);    bool found = (bool)  argType.GetProperty("Found").GetValue(target, null);    Assert.IsTrue(found);}Hope this solves your issue. I am using the latest Q2 2012 SP1 build.
Kind RegardsMehfuz
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.
public abstract class ConsoleBase{        private struct _commandLineArgument        {            public string Name { get; set; }            public string Description { get; set; }            public bool IsRequired { get; set; }            public string Value { get; set; }            public bool Found { get; set; }        }}Thanks again for contacting us. I got your point, however at present it is not possible to mock a member from nested private struct.
However, we are investigating it and soon provide a solution.
Kind Regards
Ricky
the Telerik team
Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.