데이터베이스에 쿼리하고 클라이언트에 데이터를 반환합니다. console.log에 클라이언트의 데이터가 알파벳 순서대로 있습니다.JsonResult는 클라이언트와 서버에서 반대 방향으로 정렬됩니다.
[
[{key='a',val=123},{key='a',val=666},{key='a',val=420}],
[{key='b',val=999},{key='b',val=822},{key='b',val=314}],
[{key='c',val=732},{key='c',val=444},{key='c',val=987}],
]
그러나 단위 테스트를 실행할 때 데이터가 거꾸로됩니다!
[
[{key='c',val=732},{key='c',val=444},{key='c',val=987}],
[{key='b',val=999},{key='b',val=822},{key='b',val=314}],
[{key='a',val=123},{key='a',val=666},{key='a',val=420}],
]
어쩌면 개체를 잘못 캐스팅 했습니까?
JsonResult result = (JsonResult)target.GetStockHistory(new string[]{"ABCDEFG", "ZYXWVUT"});
IGrouping<string, StockRecord>[] allStocks = (IGrouping<string, StockRecord>[])result.Data;
내가 콘솔로 정렬되고 있다는 긍정적 인 생각은 브라우저에 의해 분류 할 값을 알 수있는 방법이 없기 때문에 나를 위해 그것을 포맷 브라우저의 결과가 아닙니다. 그것은 단지 JSON을 파싱하는 것입니다. (정렬 또는 하위 쿼리 문제에 기여하고 있는지 확실하지 않습니다) 여기
public ActionResult GetStockHistory(string[] symbols)
{
StockHistory stocks = new StockHistory();
IEnumerable<StockRecord>[] records = repository.StockRecords
.Where(r => symbols.Contains(r.Symbol))
.GroupBy(r => r.Symbol)
.Select(g =>
g.OrderByDescending(g2 => g2.RecordDate)
.Take(30)
.OrderBy(g3 => g3.RecordDate))
.ToArray();
return Json(records, JsonRequestBehavior.AllowGet);
}
내가 키 stock별로 그룹화 것을 이해
[TestMethod]
public void Can_Get_Stocks()
{
// arrange
Mock<IStockHistory> mock = new Mock<IStockHistory>();
mock.Setup(m => m.StockRecords).Returns(new StockRecord[] {
new StockRecord {
Symbol = "ABCDEFG",
RecordDate = new DateTime(2000, 1, 1),
LowValue = 1,
HighValue = 10,
AdjustedCloseValue = 8,
CloseValue = 9,
OpenValue = 7,
Volume = 13245
},
new StockRecord {
Symbol = "LMNOP",
RecordDate = new DateTime(2005, 1, 1),
LowValue = 1,
HighValue = 5,
AdjustedCloseValue = 6,
CloseValue = 5,
OpenValue = 4,
Volume = 23456
},
new StockRecord {
Symbol = "ZYXWVUT",
RecordDate = new DateTime(2010, 1, 1),
LowValue = 6,
HighValue = 60,
AdjustedCloseValue = 10,
CloseValue = 10,
OpenValue = 7,
Volume = 67891
}
}.AsQueryable());
CommonController target = new CommonController(mock.Object);
// act
JsonResult result = (JsonResult)target.GetStockHistory(new string[]{"ABCDEFG", "ZYXWVUT"});
IGrouping<string, StockRecord>[] allStocks = (IGrouping<string, StockRecord>[])result.Data;
// allStocks is backwards!?!?! cats and dogs are getting along!
// assert
Assert.AreEqual(2, allStocks.Length);
Assert.AreEqual("ZYXWVUT", allStocks[0].ToArray()[0].Symbol);
Assert.AreEqual("ABCDEFG", allStocks[1].ToArray()[0].Symbol);
Assert.AreEqual(10, allStocks[0].ToArray()[0].CloseValue);
Assert.AreEqual(9, allStocks[1].ToArray()[0].CloseValue);
}
당신이 있는지 있습니까 IEnumerable을에서 [] IGrouping에 캐스팅 <문자열 StockRecord> [], IGrouping [] allStocks = (IGrouping []) result.Data; 화내고 있니? –
Regfor