有没有办法用shouldly测试异常消息?
一个例子:
public class MyException: Exception{
}
Run Code Online (Sandbox Code Playgroud)
要测试的方法:
public class ClassUnderTest
{
public void DoSomething()
{
throw new MyException("Message");
}
}
Run Code Online (Sandbox Code Playgroud)
我通常会以这种方式测试它:
[TestMethod]
public void Test()
{
try
{
new ClassUnderTest().DoSomething();
Assert.Fail("Exception not thrown");
} catch(MyException me)
{
Assert.AreEqual("Message", me.Message);
}catch(Exception e)
Assert.Fail("Wrong exception thrown");
}
}
Run Code Online (Sandbox Code Playgroud)
我应该现在可以测试是否抛出异常:
[TestMethod]
public void TestWithShouldly()
{
Should.ThrowException<MyException>(() => new ClassUnderTest().DoSomething());
}
Run Code Online (Sandbox Code Playgroud)
但是我如何测试异常的消息呢?
if 1 | []
disp('1 | []');
end
if [] | 1
disp('[] | 1');
end
Run Code Online (Sandbox Code Playgroud)
结果1 | [].第一个if被执行.
怎么来这个行为?我认为两者都有相同的结果.
我有一个功能
public Task DoSomethingAsync();
Run Code Online (Sandbox Code Playgroud)
我想为测试目的而嘲笑.
实现这种方法的返回值的正确方法是什么.如果它会返回Task<int>或什么,我会用Task.FromResult<int>(5);
我可以
public async void DoSomethingAsync()
{
//implementation
}
Run Code Online (Sandbox Code Playgroud)
然而,这缺乏await运算符,并且(至少与Resharper)将加下划线.
在这里返回任务的正确方法是什么?