相关疑难解决方法(0)

为什么Autofixture w/AutoMoqCustomization在类密封时停止抱怨缺乏无参数构造函数?

当我直接使用Moq来模拟IBuilderFactoryBuilderService在单元测试中实例化自己时,我可以通过测试来验证Create()方法是否只IBuilderFactory被调用一次.

但是,当我使用AutofixtureAutoMoqCustomization,冻结模拟IBuilderFactory和实例化BuilderServicefixture.Create<BuilderService>,我得到以下异常:

System.ArgumentException:无法实例化类的代理:OddBehaviorTests.CubeBuilder.找不到无参数构造函数.参数名称:constructorArguments

如果我进行CubeBuilder密封(通过使用SealedCubeBuilder被调用的密封类替换它来表示IBuilderFactoryForSealedBuilder.Create(),测试使用AutoFixture和AutoMoqCustomization进行传递,没有异常抛出.

我错过了什么吗?由于我直接使用Moq进行测试,我相信这与Autofixture和/或AutoMoqCustomization有关.这是理想的行为吗?如果是这样,为什么?

要重现,我正在使用:

using Moq;
using Ploeh.AutoFixture;
using Ploeh.AutoFixture.AutoMoq;
using Xunit;
Run Code Online (Sandbox Code Playgroud)

以下是说明行为的四个测试:

public class BuilderServiceTests {
    [Fact]
    public void CubeBuilderFactoryCreateMethodShouldBeCalled_UsingMoq() {
        var factory = new Mock<IBuilderFactory>();
        var sut = new BuilderService(factory.Object);
        sut.Create();
        factory.Verify(f => f.Create(), Times.Once());
    }
    [Fact]
    public void CubeBuilderFactoryCreateMethodShouldBeCalled_UsingAutoFixture() {
        var fixture = new Fixture().Customize(new AutoMoqCustomization());
        var factory = …
Run Code Online (Sandbox Code Playgroud)

dependency-injection castle-dynamicproxy moq autofixture automocking

8
推荐指数
1
解决办法
1308
查看次数