我试图使用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) 我有一个单元测试,用于检查访问权限,并确保在构建类之前有足够的文件系统访问权限.但是,我认为我的单元测试违反了单元测试原则(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)