Gatling `Create new` 测试是否有另一个对象作为 **required** 应该在 jhipster 中失败?

Are the Gatling `Create new` Tests, that have another object as **required** supposed to fail in jhipster?

Create new 将另一个对象作为 必需的 的 Gatling 测试应该会失败吗?还是我弄坏了什么?这是一个错误吗?

例如,docField 上的这个测试失败了 (doctTemplate --many--> docFields),我猜它失败是因为 docField 需要 docTemplate 对象,而生成的测试没有添加那个目的。这是我的测试结果:

================================================================================
2017-06-02 19:06:23                                         100s elapsed
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=400    KO=95    )
> First unauthenticated request                            (OK=100    KO=0     )
> Authentication                                           (OK=100    KO=0     )
> Authenticated request                                    (OK=100    KO=0     )
> Get all docFields                                        (OK=100    KO=0     )
> Create new docField                                      (OK=0      KO=95    )
---- Errors --------------------------------------------------------------------
> status.find.is(201), but actually found 400                        95 (100.0%)

这是class

public class DocField 实现 Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@NotNull
@Column(name = "name", nullable = false)
private String name;

@NotNull
@Lob
@Column(name = "default_value", nullable = false)
private String defaultValue;

@ManyToOne(optional = false)
@NotNull
private DocTemplate docTemplate;

这是测试场景:

val scn = scenario("Test the DocField entity")
        .exec(http("First unauthenticated request")
        .get("/api/account")
        .headers(headers_http)
        .check(status.is(401))
        .check(headerRegex("Set-Cookie", "XSRF-TOKEN=(.*);[\s]").saveAs("xsrf_token"))).exitHereIfFailed
        .pause(10)
        .exec(http("Authentication")
        .post("/api/authentication")
        .headers(headers_http_authenticated)
        .formParam("j_username", "admin")
        .formParam("j_password", "admin")
        .formParam("remember-me", "true")
        .formParam("submit", "Login")
        .check(headerRegex("Set-Cookie", "XSRF-TOKEN=(.*);[\s]").saveAs("xsrf_token"))).exitHereIfFailed
        .pause(1)
        .exec(http("Authenticated request")
        .get("/api/account")
        .headers(headers_http_authenticated)
        .check(status.is(200)))
        .pause(10)
        .repeat(2) {
            exec(http("Get all docFields")
            .get("/api/doc-fields")
            .headers(headers_http_authenticated)
            .check(status.is(200)))
            .pause(10 seconds, 20 seconds)
            .exec(http("Create new docField")
            .post("/api/doc-fields")
            .headers(headers_http_authenticated)
            .body(StringBody("""{"id":null, "name":"SAMPLE_TEXT", "defaultValue":"SAMPLE_TEXT"}""")).asJSON
            .check(status.is(201))
            .check(headerRegex("Location", "(.*)").saveAs("new_docField_url"))).exitHereIfFailed
            .pause(10)
            .repeat(5) {
                exec(http("Get created docField")
                .get("${new_docField_url}")
                .headers(headers_http_authenticated))
                .pause(10)
            }
            .exec(http("Delete created docField")
            .delete("${new_docField_url}")
            .headers(headers_http_authenticated))
            .pause(10)
        }

我没有看到任何 DocTemplate 的创建,因此测试失败。 jhipster 不应该生成测试以便它在代码生成后立即通过吗?还是我以某种方式破坏了它?

我认为你是对的。生成的加特林测试并不完全完美,可以改进。

但是 IMO,很难在 generator-jhipster 中编写代码,因为您需要在创建 DocField 之前在这里创建一个 DocTemplate。如果 DocTemplate 在创建之前需要另一个实体怎么办?

生成的加特林测试很简单,您需要更改代码以适应您的用例。这就是我在我的项目中所做的。