目前我正在为一个应用程序进行一些集成测试,这种情况存储在一个json文件中,单元测试的断言部分也存储在那个json 中,所以我需要解析该字符串为布尔值或其他东西。
我已经尝试过使用Roslyn但是我无法使其工作,它正在抛出这个例外:
Microsoft.CodeAnalysis.Scripting.CompilationErrorException:(1,1):error CS0103:当前上下文中不存在名称“entry”
带有案例的json文件如下所示:
"entries": [
{
"name": "SayHello",
"request": {
"text": "Hello",
"id": "61hacck8j6jg"
},
"response": {
"text": "Hello",
"id": "47me557ikbf7"
},
"assert": "Entry.Request.Text == Entry.Response.Text"
}
]
尝试过这样的事情:
object result = await CSharpScript.EvaluateAsync("entry.Request.Text == entry.Response.Text");
尝试使用小写,大写,与创建的类相同的样式,仍然无效。
此解决方案的源代码是here,也许您可以在那里获得更多信息。
修改:上面解释的代码为here
的文件答案 0 :(得分:0)
使用Globals
课程。
public class Globals
{
/// <summary>
/// ExpectedResponse
/// </summary>
public Activity Request;
/// <summary>
/// ReceivedResponse
/// </summary>
public Activity Response;
}
然后在测试中传递参数,有点@SLaks在评论中说:
/// Arrange
var globals = new Globals { Request = entry.Response, Response = latestResponse };
/// Assert
Assert.IsTrue(await CSharpScript.EvaluateAsync<bool>(entry.Assert, globals: globals));
希望这有助于某人!