コード例 #1
0
        public async Task Command_arguments_are_bound_by_name_to_method_parameters(
            Type type,
            string commandLine,
            object expectedValue)
        {
            var targetType = typeof(ClassWithMethodHavingParameter <>).MakeGenericType(type);

            var target = Activator.CreateInstance(targetType);

            var binder = new MethodBinder(
                targetType.GetMethod("HandleAsync"),
                () => target);

            var command = new Command("the-command")
            {
                Argument = new Argument
                {
                    Name         = "value",
                    ArgumentType = type
                }
            };
            var parser = new Parser(command);
            await binder.InvokeAsync(new InvocationContext(parser.Parse(commandLine), parser));

            object valueReceivedValue = ((dynamic)target).ReceivedValue;

            valueReceivedValue.Should().Be(expectedValue);
        }