0
我使用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, "[email protected]", new List<string>(), false, 1 };
}
}
}