c# - 我如何对这个自定义 commandlet 进行单元测试

标签 c# unit-testing c#-4.0 testing powershell

如果没有向它提供任何参数,我无法弄清楚如何对该命令行开关失败进行单元测试。

[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));
}
}

最佳答案

好的,我想我明白了。您的参数是一个 int,int 不为空,而且它们永远不会为空。我建议验证参数的值不为零,或者使它成为一个 int?或可为空

关于c# - 我如何对这个自定义 commandlet 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711177/

相关文章:

c# - 在树结构中通过 ID 属性定位实例

c# - 在 C# 中,将方法包含在此类中的目的是什么?

node.js - 使用 Mocha/Chai 对 bluebird Promise.all 进行单元测试

java - 针对 docker 中的服务进行集成测试

java - 使用 Mockito 验证方法后没有调用任何内容

c# - 使用 Linq 从 xml 文件中读取值

c# - 为什么域对象(PO​​CO)的成员定义为虚拟的?

c# - 使用自定义规则进行动态验证

c# - 如何将 HttpRequest 接收到 MVC 3 Controller 操作中?

wcf - 在序列化时忽略 DataMember