为什么动作不执行功能?
Why action does not executes function?
我正在使用 xUnit 对我的验证器进行单元测试,但有时操作不会执行功能。
验证器能够抛出异常,也能够填充包含错误消息的列表。 shouldThroException
参数定义验证器何时应该和不应该抛出异常。如果不是预期的,那么它应该填充 errorCollection。
此测试失败,因为当代码进入 else 操作时不会调用 ValidateEmailAddress,至少当我使用调试器检查代码时我看到了这一点。因此,未填充错误集合并且测试失败。
如何确保操作调用 ValidateEmailAddress?
[Theory]
[MemberData("StringValidatorValidateEmailAddressShouldPopulateErrorCollection")]
public void StringValidator_ValidateEmailAddress_ShouldPopulateErrorCollection(
int order,
string emailAddress,
List<string> errorCollection,
bool shouldThroException,
int expectedAmountOfErrorsInErrorCollection)
{
// Given
// When
Action action = () => this.stringValidator.ValidateEmailAddress(emailAddress, errorCollection);
// Then
if (shouldThroException)
{
action.ShouldThrowExactly<InvalidEmailAddressDigitalLibraryValidationException();
}
else
{
action.ShouldNotThrow();
}
errorCollection.Count.Should().Be(expectedAmountOfErrorsInErrorCollection);
}
public static IEnumerable<object[]> StringValidatorValidateEmailAddressShouldPopulateErrorCollection
{
get
{
return new List<object[]>
{
new object[] { 3, "asd@c", new List<string>(), false, 1 };
}
}
}
我不知道为什么
action.ShouldNotThrow();
不调用 validateEmailAddress,但我找到了解决方法。如果我打电话给
action.ShouldNotThrowExactly<InvalidEmailAddressDigitalLibraryValidationException>();
然后我得到了预期的结果。
我正在使用 xUnit 对我的验证器进行单元测试,但有时操作不会执行功能。
验证器能够抛出异常,也能够填充包含错误消息的列表。 shouldThroException
参数定义验证器何时应该和不应该抛出异常。如果不是预期的,那么它应该填充 errorCollection。
此测试失败,因为当代码进入 else 操作时不会调用 ValidateEmailAddress,至少当我使用调试器检查代码时我看到了这一点。因此,未填充错误集合并且测试失败。
如何确保操作调用 ValidateEmailAddress?
[Theory]
[MemberData("StringValidatorValidateEmailAddressShouldPopulateErrorCollection")]
public void StringValidator_ValidateEmailAddress_ShouldPopulateErrorCollection(
int order,
string emailAddress,
List<string> errorCollection,
bool shouldThroException,
int expectedAmountOfErrorsInErrorCollection)
{
// Given
// When
Action action = () => this.stringValidator.ValidateEmailAddress(emailAddress, errorCollection);
// Then
if (shouldThroException)
{
action.ShouldThrowExactly<InvalidEmailAddressDigitalLibraryValidationException();
}
else
{
action.ShouldNotThrow();
}
errorCollection.Count.Should().Be(expectedAmountOfErrorsInErrorCollection);
}
public static IEnumerable<object[]> StringValidatorValidateEmailAddressShouldPopulateErrorCollection
{
get
{
return new List<object[]>
{
new object[] { 3, "asd@c", new List<string>(), false, 1 };
}
}
}
我不知道为什么
action.ShouldNotThrow();
不调用 validateEmailAddress,但我找到了解决方法。如果我打电话给
action.ShouldNotThrowExactly<InvalidEmailAddressDigitalLibraryValidationException>();
然后我得到了预期的结果。