如果没有提供任何参数,我无法弄清楚如何对这个命令行开关失败进行单元测试。
[Cmdlet(VerbsCommon.Move, "SomeResource")]
public class MoveSomeResource : Cmdlet
{
private int _id;
[Parameter(Position = 0, Mandatory = true)]
[ValidateNotNullOrEmpty]
public int ID
{
get { return _id; }
set { _id = value; }
}
protected override void ProcessRecord()
{
string text = string.Format("Move Resource {0} ", this._id);
//Do something
if (ShouldProcess(text, action))
{
//Do processing
}
}
}
我尝试了以下方法,但是它并没有因为 ValidateNotNullOrEmpty 错误而失败,而是它执行 //Do Processing 中的部分并在那里失败。
[TestMethod]
public void TestMoveBluh()
{
MoveSomeResource cmd = new MoveSomeResource();
IEnumerator result = cmd.Invoke().GetEnumerator();
try
{
result.MoveNext();
}
catch (Exception e)
{
Assert.IsInstanceOfType(e, typeof(ArgumentException));
}
}