小编Ayd*_*may的帖子

如何在异步C#任务中使用yield

我试图使用yield并返回在异步任务中将X转换为Y的结果.但是,我在选择时收到错误.错误是:

错误CS1942 select子句中表达式的类型不正确.在"选择"调用中类型推断失败.

public async Task<Result<dynamic>> GetYAsync(IEnumerable<X> infos)
    {
        return Task.WhenAll(from info in infos.ToArray() select async ()=>
        {
            yield return await new Y(info.Id, "Start");
        });
    }
Run Code Online (Sandbox Code Playgroud)

c# asynchronous yield task

5
推荐指数
1
解决办法
2453
查看次数

此单元测试是否正确实施?

我有一个单元测试,用于检查访问权限,并确保在构建类之前有足够的文件系统访问权限.但是,我认为我的单元测试违反了单元测试原则(FIRST),例如:隔离/独立和彻底,它们正在讨论构建独立单元测试并考虑故障情景的几个方面.我也相信,以实现方式进行的单元测试是单元测试.Net框架而不是我编写的代码的功能,因为底层类没有被模拟.但我也想知道你的意见,看看我是多么错误或正确.

单元测试说明:

单元测试试图确保构造函数EventFeedFile正在执行检查访问权限的方法.那种方法叫做VerifyWritable().请注意,这EventFeedFile是一个单独的类,并VerifyWritable()在另一个类中.

[Test]
public void DirectoryNotWritableTest()
{
    var tempPath = Path.Combine(Path.GetTempPath(), "EventFileDirectoryWriteDeniedTest");
    int pageSize = 10;

    try
    {
        if (Directory.Exists(tempPath))
            Directory.Delete(tempPath, true);

        var directoryInfo = Directory.CreateDirectory(tempPath);
        var securityRules = directoryInfo.GetAccessControl();
        var writeDeniedRule =
            new FileSystemAccessRule("Everyone", FileSystemRights.CreateFiles, AccessControlType.Deny);
        securityRules.AddAccessRule(writeDeniedRule);
        directoryInfo.SetAccessControl(securityRules);

        // ReSharper disable once ObjectCreationAsStatement
        Assert.Throws<UnauthorizedAccessException>(() => new EventFeedFile(new PersistenceDirectory(tempPath),
            pageSize));
    }
    finally
    {
        if (Directory.Exists(tempPath))
            Directory.Delete(tempPath, true);
    }
}

/// <param name="directory">The directory containing the persistence file.</param>
/// <param name="pageSize">The size …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing

5
推荐指数
1
解决办法
127
查看次数

标签 统计

c# ×2

asynchronous ×1

task ×1

unit-testing ×1

yield ×1