Cas*_*ien 7 .net c# json unit-testing json.net
编写了一个Custom JsonConverter来处理同一API的不同版本返回的不同Json格式。一个应用程序向其他几个应用程序发出请求,而我们不知道将返回哪种格式,因此JsonConverter可以处理此问题,并且看起来效果很好。除了没有找到有用的资源来模拟一些Newtonsoft.Json对象(主要是JsonReader)之外,我需要向项目添加单元测试。
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JObject jsonValue = JObject.Load(reader);
if(jsonValue == null)
{
return null;
}
var responseData = ReadJsonObject(jsonValue);
return responseData;
}
[TestMethod]
public void ReadJsonReturnNullForNullJson()
{
var converter = new DataConverter();
_mockJsonReader.Setup(x => x.Value).Returns(null);
var responseData = converter.ReadJson(_mockJsonReader.Object, typeof(ProbeResponseData), null, _mockJsonSerializer.Object);
Assert.IsNull(responseData);
}
Run Code Online (Sandbox Code Playgroud)
一些代码已从ReadJson方法中删除。我正在尝试安装JsonReader以返回实际json的值,在这种情况下为空值,但是在其他单元测试中,我想要一个实际的Json(JObject)。运行单元测试时,我收到“ Newtonsoft.JsonReaderException:从JsonReader读取JObject时出错。路径”。
使用DeserializeObject<T>
会在后台调用您对ReadJson的覆盖。
[TestMethod]
public void ReadJsonVerifyTypeReturned()
{
var testJson = CreateJsonString();
var result = JsonConvert.DeserializeObject<ProbeResponseData>(testJson);
var resultCheck = result as ProbeResponseData;
Assert.IsNotNull(resultCheck);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3422 次 |
最近记录: |