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 在创建之前需要另一个实体怎么办?
生成的加特林测试很简单,您需要更改代码以适应您的用例。这就是我在我的项目中所做的。
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 在创建之前需要另一个实体怎么办?
生成的加特林测试很简单,您需要更改代码以适应您的用例。这就是我在我的项目中所做的。