Я пытаюсь проверить метод async, создавая конкретное исключение.FluentAssertions ShouldNotTrow не распознается для метода async/Func
Для этого я использую MSTEST и FluentAssertions 2.0.1.
Я проверил это Discussion on Codeplex и посмотреть, как он работает с методами асинхронному исключения это еще одна ссылка о FluentAssertions async tests:
Через некоторое время пытался работать с моим «производства» кода я выключенным на Fluentassertions фальшивый класс aync и мой результирующий код, как это (поместить этот код внутри [TestClass]
:
[TestMethod]
public void TestThrowFromAsyncMethod()
{
var asyncObject = new AsyncClass();
Action action =() =>
{
Func<Task> asyncFunction = async() =>
{
await asyncObject.ThrowAsync<ArgumentException>();
};
asyncFunction.ShouldNotThrow();
};
}
internal class AsyncClass
{
public async Task ThrowAsync<TException>()
where TException : Exception, new()
{
await Task.Factory.StartNew(() =>
{
throw new TException();
});
}
public async Task SucceedAsync()
{
await Task.FromResult(0);
}
}
проблема заключается в том, что ShouldNotThrow
не действует:
ShouldNotThrow method is not recognised by the code. If I try to compile, it gives me this error: 'System.Func' does not contain a definition for 'ShouldNotThrow' and the best extension method overload 'FluentAssertions.AssertionExtensions.ShouldNotThrow(System.Action, string, params object[])' has some invalid arguments
Спасибо.
РЕШЕНИЕ
2.0.1 FA версия не поддерживает эту ShouldNotThrow
функциональности и она будет включена в следующей версии 2.1 (около следующей недели).
Примечание: ShouldThrow уже поддерживается в версии 2.0.1.
Я ничего не знаю о FluentAssertions, но исключение говорит, что ShouldNotThrow определяется только для 'Action', а не' Func'. –
@KeithPayne Это означает, что FluentAsseritions, вероятно, не поддерживает 'async'. – svick
FluentAssertions поддерживает async, если вы читаете ссылку выше (ссылка), вы можете ее увидеть. И это тоже могло бы помочь: http://fluentassertions.codeplex.com/workitem/12148 – ferpega