如何通过 API 响应传递模拟数据 [关闭]
Posted
技术标签:
【中文标题】如何通过 API 响应传递模拟数据 [关闭]【英文标题】:How can I pass mock data through the API response [closed] 【发布时间】:2021-12-19 13:45:11 【问题描述】:在我的前端需要遵循 JSON 响应,
"status": "000",
"message": "",
"validation": [],
"data":
"TeacherGroup": [
"TeacherCode": "BP",
"TeacherCount": "12",
"img": "",
"salary": "50000.00"
,
"TeacherCode": "FT",
"TeacherCount": "5",
"img": "",
"salary": "165090.50"
]
出于测试目的,我需要根据创建此 JSON 响应来制作模拟数据。我根据这个 JSON 创建了如下的类。
public class TeacherGroup
public string TeacherCode get; set;
public string TeacherCount get; set;
public string img get; set;
public string salary get; set;
public class Data
public List<TeacherGroup> TeacherGroup get; set;
public class TeacherGroupData
public string status get; set;
public string message get; set;
public List<object> validation get; set;
public Data data get; set;
怎么办,我试过这种方式设置mock数据,
public IEnumerable<TeacherGroupData> GetAllGroups()
var groups = new List<TeacherGroupData>()
new TeacherGroupData status = "000" , message = "" , validation = null
// how can I set values to data > TeacherGroup
;
return groups;
这是正确的方法吗?如果是,我如何为数据和教师组设置模拟值?
【问题讨论】:
看起来您已经为对象的三个属性设置了值。是什么阻止您为第四个属性设置值?基本上只是将data = new Data
添加到您的对象初始化程序中?并根据需要在new Data
中进一步添加属性初始化器?我想我不清楚这里的问题是什么,为什么你不能继续使用你已经开始编写的代码?
@David Sir,我只是想验证一下,这是设置模拟数据以获得响应的正确方法吗?
在这种情况下,答案很简单:“是的,这是从 API 返回模拟数据的一种正确方法”。虽然您也可以通过运行和测试代码来验证这一点。
@David Cool,谢谢先生 :)
【参考方案1】:
除非您对模拟数据有一些要求,否则您可以使用此示例代码:
public static TeacherGroupData GetMockData(int teachersGroupCount)
var teacherGroup = new TeacherGroup[teachersGroupCount];
for (int i = 0; i < teachersGroupCount; i++)
teacherGroup[i] = new TeacherGroup()
TeacherCode= Guid.NewGuid().ToString(),
TeacherCount = Guid.NewGuid().ToString(),
salary = Guid.NewGuid().ToString(),
img = Guid.NewGuid().ToString(),
;
var mockData = new TeacherGroupData()
status = Guid.NewGuid().ToString(),
message = Guid.NewGuid().ToString(),
validation = new List<object>(),
data = new Data() TeacherGroup = teacherGroup.ToList() ,
;
return mockData;
好吧,出于测试目的(单元测试),这里也可以使用 AutoFixture 库(通常在单元测试中使用它,但您也有类似的情况)。这大大简化了代码:
public static TeacherGroupData GetMockData(int teachersGroupCount)
var data = new Data()
TeacherGroup = new Fixture().CreateMany<TeacherGroup>(teachersGroupCount).ToList(),
;
var mockData = new Fixture().Create<TeacherGroupData>();
mockData.data = data;
return mockData;
【讨论】:
【参考方案2】:我知道这不是测试安全,但您可以使用 json.net 将 json 反序列化为对象
https://www.newtonsoft.com/json/help/html/deserializeobject.htm
string testDataJson = @"
"status": "000",
"message": "",
"validation": [],
.......
";
var teacherGroupData = JsonConvert.DeserializeObject<TeacherGroupData>(testDataJson);
【讨论】:
以上是关于如何通过 API 响应传递模拟数据 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章