@@ -14,10 +14,7 @@ struct AESObject: Decodable
1414 @AESDecoder ( adopter: AESAdopting . self)
1515 private( set)
1616 var url : String ?
17- }
18-
19- struct AESObject2 : Decodable
20- {
17+
2118 @AESDecoder ( adopter: AESAdopting . self)
2219 private( set)
2320 var urls : Array < String > ?
@@ -44,59 +41,69 @@ struct AESAdopting: AESAdopter
4441final
4542class AESDecoderTest : XCTestCase
4643{
47- override func setUpWithError( ) throws
44+ var object : AESObject ?
45+
46+ override
47+ func setUpWithError( ) throws
4848 {
4949 // Put setup code here. This method is called before the invocation of each test method in the class.
5050
5151 // Arrange
52+ let jsonString : String = """
53+ {
54+ " url " : " 0NhMzVQIsjShyNnck3huFVjVCcku2a+iAQVfY3CDrUw= " ,
55+ " urls " : [
56+ " 0NhMzVQIsjShyNnck3huFVjVCcku2a+iAQVfY3CDrUw= " ,
57+ " 0NhMzVQIsjShyNnck3huFVjVCcku2a+iAQVfY3CDrUw= "
58+ ]
59+ }
60+ """
61+ let jsonData : Data = jsonString. data ( using: . utf8) !
62+ let jsonDecoder = JSONDecoder ( )
5263
5364 // Act
65+ let object = try jsonDecoder. decode ( AESObject . self, from: jsonData)
66+ self . object = object
5467
5568 // Assert
5669 }
5770
71+ override func tearDown( ) {
72+ super. tearDown ( )
73+ // 確保每個測試案例結束後清理狀態
74+ }
75+
5876 func testAESDecoderSuccess( ) throws
5977 {
6078 // Arrange
61- let jsonString : String = """
62- {
63- " url " : " 0NhMzVQIsjShyNnck3huFVjVCcku2a+iAQVfY3CDrUw= "
79+ guard let object: AESObject = self . object else {
80+
81+ XCTFail ( " Object should not be nil " )
82+ return
6483 }
65- """
66- let jsonData : Data = jsonString. data ( using: . utf8) !
67- let jsonDecoder = JSONDecoder ( )
6884
6985 // Act
70- let object = try jsonDecoder. decode ( AESObject . self, from: jsonData)
71-
72- // Assert
7386 let url : String ? = object. url
7487 let expect : String = " https://www.apple.com "
7588
89+ // Assert
7690 XCTAssertEqual ( url, expect)
7791 }
7892
7993 func testDecoderStringArraySuccess( ) throws
8094 {
8195 // Arrange
82- let jsonString : String = """
83- {
84- " urls " : [
85- " 0NhMzVQIsjShyNnck3huFVjVCcku2a+iAQVfY3CDrUw= " ,
86- " 0NhMzVQIsjShyNnck3huFVjVCcku2a+iAQVfY3CDrUw= "
87- ]
96+ guard let object: AESObject = self . object else {
97+
98+ XCTFail ( " Object should not be nil " )
99+ return
88100 }
89- """
90- let jsonData : Data = jsonString. data ( using: . utf8) !
91- let jsonDecoder = JSONDecoder ( )
92101
93102 // Act
94- let object = try jsonDecoder. decode ( AESObject2 . self, from: jsonData)
95-
96- // Assert
97103 let urls : Array < String > ? = object. urls
98104 let expect : Array < String > = [ " https://www.apple.com " , " https://www.apple.com " ]
99105
106+ // Assert
100107 XCTAssertEqual ( urls, expect)
101108 }
102109}
0 commit comments