我试图为我们的开发团队编写一个实用程序,它将生成单元测试,以至少强制执行代码覆盖。我使用Roslyn检查他们编写的代码,以便为DB访问等事件生成存根。
例如,我有以下函数我正在尝试为:
生成单元测试public DiaryDro GetDiaryById(long id)
{
return Translator.EntityToDro(_repository.FindOne<Diary>(id));
}
我可以找到并使用我需要的一切,包括模拟我们的Repository,因为它是一个类级变量,因此很容易完成。我也可以模拟翻译器,并为EntityToDro生成Stub。我遇到的问题是,我不知道如何告诉传递给EntityToDro函数的参数。
使用Roslyn,我可以访问其中包含return
行的InvocationExpressionSyntax,它有一个字段ArgumentList
,我甚至可以浑浑噩噩地找到它#&获得Diary
,但我需要完全限定名称,因为我们有多种Diary
。
有没有办法做到这一点,或者我不能从这里到达那里?
答案 0 :(得分:1)
要获取类型信息,您需要查询语义模型:
document.GetSemanticModel().GetTypeInfo(expression)