public void ActionInvoker_Invokes_GenerateCode_Method_With_Right_ActionModel() { //Arrange bool methodCalled = false; CodeGeneratorModel invokedModel = null; var codeGenInstance = new CodeGeneratorSample((model) => { methodCalled = true; invokedModel = model; }); var typeActivatorMock = new Mock <ITypeActivator>(); var serviceProviderMock = new Mock <IServiceProvider>(); var generatorMock = new Mock <CodeGeneratorDescriptor>(typeof(CodeGeneratorSample).GetTypeInfo(), typeActivatorMock.Object, serviceProviderMock.Object); generatorMock .SetupGet(cd => cd.CodeGeneratorInstance) .Returns(codeGenInstance); generatorMock .SetupGet(cd => cd.Name) .Returns(typeof(CodeGeneratorSample).Name); var actionDescriptor = new ActionDescriptor(generatorMock.Object, typeof(CodeGeneratorSample).GetMethod("GenerateCode")); //This is not a perfect unit test as the arrange is using actual instance rather than a mock var actionInvoker = new ActionInvoker(actionDescriptor); //Act actionInvoker.Execute("CodeGeneratorSample StringValuePassed --BoolProperty".Split(' ')); //Assert Assert.True(methodCalled); Assert.NotNull(invokedModel); Assert.Equal("StringValuePassed", invokedModel.StringProperty); Assert.True(invokedModel.BoolProperty); }
public void ActionInvoker_Invokes_GenerateCode_Method_With_Right_ActionModel() { //Arrange bool methodCalled = false; CodeGeneratorModel invokedModel = null; var codeGenInstance = new CodeGeneratorSample((model) => { methodCalled = true; invokedModel = model; }); var serviceProviderMock = new Mock<IServiceProvider>(); var generatorMock = new Mock<CodeGeneratorDescriptor>(typeof(CodeGeneratorSample).GetTypeInfo(), serviceProviderMock.Object); generatorMock .SetupGet(cd => cd.CodeGeneratorInstance) .Returns(codeGenInstance); generatorMock .SetupGet(cd => cd.Name) .Returns(typeof(CodeGeneratorSample).Name); var actionDescriptor = new ActionDescriptor(generatorMock.Object, typeof(CodeGeneratorSample).GetMethod("GenerateCode")); //This is not a perfect unit test as the arrange is using actual instance rather than a mock var actionInvoker = new ActionInvoker(actionDescriptor); //Act actionInvoker.Execute("CodeGeneratorSample StringValuePassed --BoolProperty".Split(' ')); //Assert Assert.True(methodCalled); Assert.NotNull(invokedModel); Assert.Equal("StringValuePassed", invokedModel.StringProperty); Assert.True(invokedModel.BoolProperty); }