将具有2个参数的函数转换为lambda动作

时间:2017-02-13 19:46:47

标签: c# lambda action assert

我想测试(使用using Microsoft.VisualStudio.TestTools.UnitTesting)此测试函数的顶行会导致DataMisalignedException被抛出。

namespace xxx.Services.SupplierApiTests
{
    [TestClass]
    public class JsonSchemaValidatorTests
    {
        [TestMethod]
        public void ShouldThrowOnBadPhoneNumber()
        {
            JsonSchemaValidator.validateAgainstJsonSchema(ProviderService.getErronousProviders(), "./provider-schema.json");
            Action<IList, string> myAction = (x, y) => JsonSchemaValidator.validateAgainstJsonSchema(x, y);
            Assert.ThrowsException<DataMisalignedException>(myAction);
        }
    }
}

如何使用JsonSchemaValidator.validateAgainstJsonSchema作为操作,从测试的第一行传入两个参数?我的尝试是在上面的代码中,但没有通过这两个参数。

1 个答案:

答案 0 :(得分:1)

要指示在测试方法执行期间预期会出现异常,您可以在测试方法之上使用[ExpectedException]属性。

[TestClass]
public class JsonSchemaValidatorTests
{
    [TestMethod]
    [ExpectedException(typeof(DataMisalignedException))]
    public void ShouldThrowOnBadPhoneNumber()
    {
        JsonSchemaValidator.validateAgainstJsonSchema(ProviderService.getErronousProviders(), "./provider-schema.json");
    }
}