Rahul Raut
Rahul Raut

Reputation: 633

I am getting following error : "The following constructor parameters did not have matching fixture data: AddressValidator addressValidator"

I can write extension methods which can do this job but I am not getting what is going wrong with xunit. Any help is appreciated.

namespace TestSuite.Validator
{
    public abstract class ValidatorTest<TClass,TClassValidator> where TClassValidator: AbstractValidator<TClass>
    {
        private readonly TClassValidator _tClassValidator;
        public ValidatorTest(TClassValidator validator)
        {
            _tClassValidator = validator;
        }
        public void Address_Should_ReturnValidationError_When_MandatoryFieldsAreNotPassed(TClass address, List<KeyValuePair<string, string>> expectedErrors)
        {
            var validationResult = _tClassValidator.Validate(address);
            Assert.False(validationResult.IsValid);

            foreach (var expectedError in expectedErrors)
            {
                Assert.Contains(validationResult.Errors, (actualError) => actualError.ErrorMessage.Equals(expectedError.Value) && actualError.ErrorCode.Equals(expectedError.Key));
            }

            foreach (var actualError in validationResult.Errors)
            {
                Assert.Contains<KeyValuePair<string, string>>(expectedErrors, expectedError => expectedError.Value.Equals(actualError.ErrorMessage) && expectedError.Key.Equals(actualError.ErrorCode));
            }
        }

        public void Address_Should_Pass_When_MandatoryFieldsArePassed(TClass address)
        {
            var validationResult = _tClassValidator.Validate(address);
            Assert.True(validationResult.IsValid);
            Assert.Empty(validationResult.Errors);
        }
    }
}

namespace TestSuite.Validator
{
    public class AddressValidatorTest : ValidatorTest<Address, AddressValidator>
    {
        public AddressValidatorTest(AddressValidator addressValidator) : base(new AddressValidator())
        {
        }
        [Theory]
        [JsonDataReaderAttribute("AddressValidatorData", "Valid")]
        public void PositiveTest(Address address)
        {
            Address_Should_Pass_When_MandatoryFieldsArePassed(address);
        }
    }
}

Upvotes: 2

Views: 2887

Answers (1)

Mike Cheel
Mike Cheel

Reputation: 13106

I just had a similar error and it was because I forgot to implement IClassFixture on my test class.

Upvotes: 3

Related Questions