问题描述
在单元测试中,我需要测试元素的顺序:
test("Check map order",() {
LinkedHashMap<String,String> actualMap = LinkedHashMap();
actualMap["0"] = "firstValue";
actualMap["1"] = "secondValue";
LinkedHashMap<String,String> expectedMap = LinkedHashMap();
expectedMap["1"] = "secondValue";
expectedMap["0"] = "firstValue";
print("actual: $actualMap");
print("expected: $expectedMap");
expect(actualMap,isNot(expectedMap));
});
该测试失败,如果遵守订单,则会发生该事件:
actual: {0: firstValue,1: secondValue}
expected: {1: secondValue,0: firstValue}
package:test_api expect
test/services/game/negotiation/NegotiationGameService_test.dart 33:7 main.<fn>.<fn>
Expected: not {'1': 'secondValue','0': 'firstValue'}
Actual: {'0': 'firstValue','1': 'secondValue'}
解决方法
第一个可行但有点无聊的想法:
test("Check map order",() {
LinkedHashMap<String,String> actualMap = LinkedHashMap();
actualMap["0"] = "firstValue";
actualMap["1"] = "secondValue";
LinkedHashMap<String,String> expectedMapSameOrder = LinkedHashMap();
expectedMap["0"] = "firstValue";
expectedMap["1"] = "secondValue";
LinkedHashMap<String,String> expectedMapDifferentOrder = LinkedHashMap();
expectedMap["1"] = "secondValue";
expectedMap["0"] = "firstValue";
print("actual: $actualMap");
print("expected: $expectedMapSameOrder");
print("expected: $expectedMapDifferentOrder");
expect(actualMap,expectedMapSameOrder);
expect(actualMap.keys,isNot(orderedEquals(expectedMapSameOrder.keys)));
expect(actualMap,expectedMapDifferentOrder);
expect(actualMap.keys,orderedEquals(expectedMapDifferentOrder.keys));
});