scalaxb で生成されたケース クラスと型クラス インスタンスの有効性を確認する方法の 1 つは、ラウンドトリップを行うことです。完璧ではありませんが、クラスの一貫性をテストする必要があります。
たとえば、XML ドキュメントから開始してケース クラスに解析し、再び XML ドキュメントに戻すことができます。そのためには、さまざまなシナリオをカバーするジェネレーターを定義する必要があります。
または、逆に、任意のケース クラスから始めて、それらを XML ドキュメントに変換し、解析してケース クラスに戻します。任意のジェネレーターの例のようなケース クラス ジェネレーターを定義する方が簡単だと思います。
implicit lazy val arbBool: Arbitrary[Boolean] = Arbitrary(oneOf(true, false))
たとえばArbitrary
、次のインスタンスAddressType2Code
は同じ方法で定義できます。
<xs:simpleType name="AddressType2Code">
<xs:restriction base="xs:string">
<xs:enumeration value="ADDR"/>
<xs:enumeration value="PBOX"/>
<xs:enumeration value="HOME"/>
<xs:enumeration value="BIZZ"/>
<xs:enumeration value="MLTO"/>
<xs:enumeration value="DLVY"/>
</xs:restriction>
</xs:simpleType>
これらを構成要素として使用するとArbitrary
、複合型のインスタンスを のように構築できますimplicit def arbTree[T]
。
インスタンスを配置する利点はArbitrary
、XML ドキュメントが既に存在するかのように、それを使用してビジネス ロジック コードをテストできることです。