我正在研究如何对 SwiftUI 视图代码进行单元测试。
我有以下定义:
struct ContentView : View {
var body: some View {
Text("Hello World")
.font(.title)
.fontWeight(.bold)
}
}
我可以像这样测试它:
func testBody() {
let cv = ContentView()
let body = cv.body
XCTAssertNotNil(body)
guard let text = body as? Text else { XCTFail(); return }
XCTAssertEqual(Text("Hello World").font(.title).fontWeight(.bold), text)
}
但是,一旦我想测试文本对齐方式,就会遇到问题:
生产代码:
struct ContentView : View {
var body: some View {
Text("Hello World")
.font(.title)
.fontWeight(.bold)
.multilineTextAlignment(.leading)
}
}
和测试代码:
func testBody() {
let cv = ContentView()
let body = cv.body
XCTAssertNotNil(body)
guard let text = body as? Text else { XCTFail(); return }
// COMPILER ERROR ON NEXT LINE
XCTAssertEqual(Text("Hello World").font(.title).fontWeight(.bold).multilineTextAlignment(.leading), text)
}
...然后我收到以下编译器错误:
Cannot convert value of type 'Text' to expected argument type '_ModifiedContent<Text, _EnvironmentKeyWritingModifier<HAlignment>>'
如何测试Text
结构的对齐方式?