使用NSubstitute,如何模拟返回任务的方法中抛出的异常?
假设我们的方法签名看起来像这样:
Task<List<object>> GetAllAsync();
Run Code Online (Sandbox Code Playgroud)
以下是NSubstitute文档如何模拟抛出非void返回类型的异常.但这不编译:(
myService.GetAllAsync().Returns(x => { throw new Exception(); });
Run Code Online (Sandbox Code Playgroud)
那你怎么做到这一点?
标题总结得很好.我知道我可以使用以下方法获取嵌入式资源名称:
var assembly = System.Reflection.Assembly.GetExecutingAssembly();
string[] files = assembly.GetManifestResourceNames();
Run Code Online (Sandbox Code Playgroud)
但我希望能够从特定文件夹中获取嵌入式资源.或者至少能够区分来自不同文件夹的嵌入资源.
它们通常被命名为"Script Block(#)",其中井号是任意数字,但我也在"其他"部分中看到了空白的html文档(仅限html和body标签).更具体地说,我所指的"其他"部分可以在Internet Explorer 9调试器的"脚本"选项卡中"开始调试"按钮左侧的下拉列表中找到.(假设您在生成"其他"的网页上)此外,您必须正在调试才能看到"其他"部分.
我有一个带有一些插件的应用程序,我假设这些插件会导致那些"其他"显示出来."脚本块"实际上是生成的并且没有被删除,所以它慢慢开始占用内存,直到我必须刷新页面.在不经意地搜索网页后,我决定来这里,希望能更深入地了解为什么要创建它们以及它们到底是什么?
对不起以上,但我真的不知道一个更好的方式来形容我谈论可怕的描述,我想这就是为什么我在这里...
javascript debugging javascript-debugger internet-explorer-9
为什么调用.Result此方法会导致TaskCanceledException:
public Task<IEnumerable<object>> GetAsync()
{
using (var conn = new SqlConnection("connectionString"))
{
return conn.QueryAsync<object>("select * from objects");
}
}
Run Code Online (Sandbox Code Playgroud)
但是调用.Result这个方法有效:
public async Task<IEnumerable<object>> GetAsync()
{
using (var conn = new SqlConnection("connectionString"))
{
return await conn.QueryAsync<object>("select * from objects");
}
}
Run Code Online (Sandbox Code Playgroud)
区别在于async\await第二种方法中使用的是关键字.
c# ×3
task ×2
.net ×1
async-await ×1
asynchronous ×1
dapper ×1
debugging ×1
javascript ×1
nsubstitute ×1
reflection ×1