2017-02-13 5 views
0

Я хочу проверить (с 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 как действие, переходящий в двух аргументах из верхней строки теста? Моя попытка находится в коде выше, но не передает два параметра.

+0

Я думаю, что вы хотите 'Assert.ThrowsException (() => JsonSchemaValidator.validateAgainstJsonSchema (ProviderService.getErronousProviders(), "./provider-schema.json"))', но я не могу чтобы найти документы для 'Assert.ThrowsException', я обычно просто использую атрибут« ExpectedException »для самого теста. – juharr

+0

@juharr Да, это то, что я искал. Я вижу, что это не преобразование функции, она вызывает ее в анонимной функции. Cheers – BeniaminoBaggins

+0

Я предполагаю, что 'Assert.ThrowsException' ожидает' Action', а не 'Action '. – juharr

ответ

1

Чтобы указать, что во время выполнения тестового метода ожидается исключение, вы можете использовать атрибут [ExpectedException] поверх метода тестирования.

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