Mocking issue: Can not instantiate proxy of class. Could not find a parameterless constructor











up vote
0
down vote

favorite
1












I am trying to write unit test for a class which I can not change implementation.
Below is the error which I am seeing while writing tests.



Unit to Mock:



public class ClassA : IInterface
{
public readonly ClassB _classB = null;

public ClassA(ClassB classB)
{
_classB = classB;
}

private ClassP<ClassB, ClassC> _classP;

public virtual ClassP<ClassB, ClassC> TargetToMock => _classP ?? (_classP = new ClassP<ClassB, ClassC>(_classB));
}


Mocking:



MockClassB = new Mock<ClassB>();

MockClassA = new Mock<ClassA>(MockClassB.Object);


Setup:



MockClassA
.Setup(s => s.TargetToMock.SomeMethod(argument1, argument2))
.Returns(SomeResponseObject);


Exception:




Castle.DynamicProxy.InvalidProxyConstructorArgumentsException : Can
not instantiate proxy of class: ClassP`2[[ClassB, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null],[ClassC, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null]].
Could not find a parameterless constructor.











share|improve this question









New contributor




sillydeveloper is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • I think the correct way is MockClassA = new ClassA(MockClassB.Object)
    – Kien Chu
    Nov 5 at 2:00










  • you are right, actually I have a typo in the question
    – sillydeveloper
    Nov 5 at 2:18

















up vote
0
down vote

favorite
1












I am trying to write unit test for a class which I can not change implementation.
Below is the error which I am seeing while writing tests.



Unit to Mock:



public class ClassA : IInterface
{
public readonly ClassB _classB = null;

public ClassA(ClassB classB)
{
_classB = classB;
}

private ClassP<ClassB, ClassC> _classP;

public virtual ClassP<ClassB, ClassC> TargetToMock => _classP ?? (_classP = new ClassP<ClassB, ClassC>(_classB));
}


Mocking:



MockClassB = new Mock<ClassB>();

MockClassA = new Mock<ClassA>(MockClassB.Object);


Setup:



MockClassA
.Setup(s => s.TargetToMock.SomeMethod(argument1, argument2))
.Returns(SomeResponseObject);


Exception:




Castle.DynamicProxy.InvalidProxyConstructorArgumentsException : Can
not instantiate proxy of class: ClassP`2[[ClassB, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null],[ClassC, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null]].
Could not find a parameterless constructor.











share|improve this question









New contributor




sillydeveloper is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • I think the correct way is MockClassA = new ClassA(MockClassB.Object)
    – Kien Chu
    Nov 5 at 2:00










  • you are right, actually I have a typo in the question
    – sillydeveloper
    Nov 5 at 2:18















up vote
0
down vote

favorite
1









up vote
0
down vote

favorite
1






1





I am trying to write unit test for a class which I can not change implementation.
Below is the error which I am seeing while writing tests.



Unit to Mock:



public class ClassA : IInterface
{
public readonly ClassB _classB = null;

public ClassA(ClassB classB)
{
_classB = classB;
}

private ClassP<ClassB, ClassC> _classP;

public virtual ClassP<ClassB, ClassC> TargetToMock => _classP ?? (_classP = new ClassP<ClassB, ClassC>(_classB));
}


Mocking:



MockClassB = new Mock<ClassB>();

MockClassA = new Mock<ClassA>(MockClassB.Object);


Setup:



MockClassA
.Setup(s => s.TargetToMock.SomeMethod(argument1, argument2))
.Returns(SomeResponseObject);


Exception:




Castle.DynamicProxy.InvalidProxyConstructorArgumentsException : Can
not instantiate proxy of class: ClassP`2[[ClassB, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null],[ClassC, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null]].
Could not find a parameterless constructor.











share|improve this question









New contributor




sillydeveloper is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











I am trying to write unit test for a class which I can not change implementation.
Below is the error which I am seeing while writing tests.



Unit to Mock:



public class ClassA : IInterface
{
public readonly ClassB _classB = null;

public ClassA(ClassB classB)
{
_classB = classB;
}

private ClassP<ClassB, ClassC> _classP;

public virtual ClassP<ClassB, ClassC> TargetToMock => _classP ?? (_classP = new ClassP<ClassB, ClassC>(_classB));
}


Mocking:



MockClassB = new Mock<ClassB>();

MockClassA = new Mock<ClassA>(MockClassB.Object);


Setup:



MockClassA
.Setup(s => s.TargetToMock.SomeMethod(argument1, argument2))
.Returns(SomeResponseObject);


Exception:




Castle.DynamicProxy.InvalidProxyConstructorArgumentsException : Can
not instantiate proxy of class: ClassP`2[[ClassB, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null],[ClassC, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null]].
Could not find a parameterless constructor.








c# .net unit-testing mocking moq






share|improve this question









New contributor




sillydeveloper is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




sillydeveloper is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited Nov 5 at 2:20





















New contributor




sillydeveloper is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked Nov 5 at 1:57









sillydeveloper

11




11




New contributor




sillydeveloper is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





sillydeveloper is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






sillydeveloper is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












  • I think the correct way is MockClassA = new ClassA(MockClassB.Object)
    – Kien Chu
    Nov 5 at 2:00










  • you are right, actually I have a typo in the question
    – sillydeveloper
    Nov 5 at 2:18




















  • I think the correct way is MockClassA = new ClassA(MockClassB.Object)
    – Kien Chu
    Nov 5 at 2:00










  • you are right, actually I have a typo in the question
    – sillydeveloper
    Nov 5 at 2:18


















I think the correct way is MockClassA = new ClassA(MockClassB.Object)
– Kien Chu
Nov 5 at 2:00




I think the correct way is MockClassA = new ClassA(MockClassB.Object)
– Kien Chu
Nov 5 at 2:00












you are right, actually I have a typo in the question
– sillydeveloper
Nov 5 at 2:18






you are right, actually I have a typo in the question
– sillydeveloper
Nov 5 at 2:18



















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});






sillydeveloper is a new contributor. Be nice, and check out our Code of Conduct.










 

draft saved


draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53147359%2fmocking-issue-can-not-instantiate-proxy-of-class-could-not-find-a-parameterles%23new-answer', 'question_page');
}
);

Post as a guest





































active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes








sillydeveloper is a new contributor. Be nice, and check out our Code of Conduct.










 

draft saved


draft discarded


















sillydeveloper is a new contributor. Be nice, and check out our Code of Conduct.













sillydeveloper is a new contributor. Be nice, and check out our Code of Conduct.












sillydeveloper is a new contributor. Be nice, and check out our Code of Conduct.















 


draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53147359%2fmocking-issue-can-not-instantiate-proxy-of-class-could-not-find-a-parameterles%23new-answer', 'question_page');
}
);

Post as a guest




















































































這個網誌中的熱門文章

Academy of Television Arts & Sciences

L'Équipe

1995 France bombings