小编Cas*_*ien的帖子

模拟JsonReader如何测试自定义JsonConverter

编写了一个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时出错。路径”。

.net c# json unit-testing json.net

7
推荐指数
1
解决办法
3422
查看次数

具有 Flexbox 列的相等垂直间距

我在 css 中努力让我的 flexbox 显示垂直等距的列中的项目,因此列的每一行之间的空间均匀。

html, body,
.flex-container {
  margin: 0;
  height: 100%;
  width: 100%;
}

body {
  font-family: 'Droid Sans', sans-serif;
  overflow: hidden;
  background-color: #2b2b2b;
}

.flex-container {
  display: -webkit-flex;
  display: flex;
  flex-direction: column;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #2b2b2b;
}

img {
  border-radius: 50%;
  max-width: 400px;
  max-height: auto;
}

.home-flex {
  display: flex;
  justify-content: space-around;
  align-items: center;
  flex-wrap: wrap;
  width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flex-container">
  <h1>Name</h1>
  <img src="image.png">
  <div class="home-flex">
    <a title="twitter" href="#">
      <i>twitter</i>
    </a>
    <a title="github" …
Run Code Online (Sandbox Code Playgroud)

html css flexbox

6
推荐指数
1
解决办法
2万
查看次数

为什么在C#7.2中具有"in"参数修饰符时仍然可以修改List <>

本周早些时候,C#7.2发布了"in"参数修饰符的新功能,请参阅此处的发行说明

发行说明中提供的详细信息包括:"参数的修饰符,用于指定参数通过引用传递但不被调用方法修改."

关于这个新功能还没有很多文档,所以我一直在尝试.似乎对原始类型按预期工作,并阻止访问对象属性.但是,对于列表,您仍然可以调用方法来修改List(即添加,删除,反向),您可以直接修改元素.

    static void Main(string[] args)
    {
        var test = new List<int>();
        test.Add(5);
        Console.WriteLine(test[0]);
        TestMethod(test);
        Console.WriteLine(test[0]);
    }

    public static void TestMethod(in List<int> myList)
    {
        myList[0] = 10;
        myList.Add(7);
        myList.Remove(2);
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么在使用"in"参数修饰符时仍然可以修改集合?

c# c#-7.2

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

标签 统计

c# ×2

.net ×1

c#-7.2 ×1

css ×1

flexbox ×1

html ×1

json ×1

json.net ×1

unit-testing ×1