私のフィーチャファイルでデータテーブルを使用し、ステップ定義でコンテンツを1つの特定のタイプに変換したいとします。例として、次のデータテーブルをUserクラスの単一のインスタンスに変換できるようにしたいと考えています。キュウリJavaのデータテーブルを特定のタイプに変換する
Given the user is
| firstname | lastname | nationality |
| Roberto | Lo Giacco | Italian |
Userクラス:
class User {
String firstName;
String lastName;
Nationality nationality;
//getters/setters/etc
}
ステップ定義:私はこれを実行すると
@Given("^the user is$")
public void the_user_is(User user) {
this.user = user;
}
は、しかし、私は次のエラーを取得する:
cucumber.runtime.CucumberException: cucumber.runtime.CucumberException: Not a Map or List type: class example.User
ドキュメントには、ことを示唆していますaを変換することは可能ですデータテーブルを単一のオブジェクトに変換します。
しかし、それは常にリストを返しますように見えるコードを検査するから。このコードスニペットは、キュウリ/ランタイム/テーブル/ TableConverter.convert(DataTableののdataTable、タイプtype、boolean型転置)からです:
Type itemType = listItemType(type);
if (itemType == null) {
throw new CucumberException("Not a Map or List type: " + type);
}
私はそれがリストの作品を知っている:
@Given("^the user is$")
public void the_user_is(List<User> user) {
this.user = user.get(0);
}
が、私の中に現実世界のステップ(この単純化された例ではなく)は、作成する必要があるオブジェクトが1つしかなく、リストの使用を避けて最初のアイテムを取得したい。
なぜステップテーブルにデータテーブルを渡しませんか? –
要点は、ステップ定義でDataTableまたはListを持つ必要はなく、フィーチャーファイルで定義されたオブジェクトの単一インスタンスを直接指定することです。 – DaveJohnston