【发布时间】:2017-12-14 11:56:52
【问题描述】:
我是 XUnit 和 Moq 的新手。我有一个将字符串作为参数的方法。如何使用 XUnit 处理异常。
[Fact]
public void ProfileRepository_GetSettingsForUserIDWithInvalidArguments_ThrowsArgumentException() {
//arrange
ProfileRepository profiles = new ProfileRepository();
//act
var result = profiles.GetSettingsForUserID("");
//assert
//The below statement is not working as expected.
Assert.Throws<ArgumentException>(() => profiles.GetSettingsForUserID(""));
}
待测方法
public IEnumerable<Setting> GetSettingsForUserID(string userid)
{
if (string.IsNullOrWhiteSpace(userid)) throw new ArgumentException("User Id Cannot be null");
var s = profiles.Where(e => e.UserID == userid).SelectMany(e => e.Settings);
return s;
}
【问题讨论】:
-
“没有按预期工作”是什么意思? (另外,请格式化您的代码,使其更具可读性。使用预览,并在您阅读时发布您希望它的外观。)
-
提示:在您开始呼叫
Assert.Throws之前,您正在呼叫GetSettingsForUserID("")。Assert.Throws电话无法帮助您。我建议对 AAA 不那么死板……
标签: c# unit-testing xunit