小编Fil*_*ski的帖子

测试容器无法配置端口绑定

我正在使用 testcontainer 版本1.15.2。测试在 windows 10 上的 intellij 中运行。我有一个wiremock 容器。默认情况下它监听端口8080。我想将此端口映射到8081. 所以我这样做:

public WiremockContainer() {
    super("wiremock/wiremock:2.9.0-alpine");

    self()
            .waitingFor(Wait.forLogMessage(".*port:\\s*8080.*", 1)
                    .withStartupTimeout(Duration.ofSeconds(25L)))
            .withCreateContainerCmdModifier(cmd -> cmd.getHostConfig()
                    .withPortBindings(new PortBinding(Ports.Binding.bindPort(8081), new ExposedPort(8080)))
            )
            .withNetworkAliases("wiremock")
            .withExposedPorts(8081);
}
Run Code Online (Sandbox Code Playgroud)

创建容器时,它会侦听随机端口,而不是8081[1]。我究竟做错了什么 ?我应该怎么做才能让容器监听8081而不是随机端口?

[1]

  1. 我有另一个容器尝试连接http://wiremock:8081并不断获取Connection refused
  2. 当我添加:.waitingFor((...)forPort(8081)(...)));发生超时。

java spring-boot docker-java testcontainers testcontainers-junit5

9
推荐指数
2
解决办法
1万
查看次数

C#JToken.SelectTokens方法 - 什么是JPath表达式?

我有这样的json文本:

{
"course_editions": {
"2014/SL": [
  {
    "grades": {
      "course_units_grades": {
        "159715": {
          "1": {
            "value_symbol": "4",
            "exam_session_number": 1,
            "exam_id": 198172,
            "value_description": {
              "en": "good",
            }
          }
        }
      },
      "course_grades": {}
    }
  },
  {
    "grades": {
      "course_units_grades": {
        "159796": {
          "1": {
            "value_symbol": "5",
            "exam_session_number": 1,
            "exam_id": 198259,
            "value_description": {
              "en": "very good",
            }
          }
        }
      },
      "course_grades": {}
    }
  },
Run Code Online (Sandbox Code Playgroud)

我想使用Namespace中的JToken.SelectTokens方法:Newtonsoft.Json.Linq

我试过这样的:

string json_response = GetResponse(sign(url_courses));
var courses_tokens = JObject.Parse(json_response).SelectTokens("['course_editions'].['2014/SL'].[*].['grades'].*")
Run Code Online (Sandbox Code Playgroud)

它不起作用.course_unit_grades之前和之后我只想获得这些数字"1".所以仅在这个例子中:"159715"并且"159796"能够一个接一个地使用所有这些 …

c# linq json

7
推荐指数
1
解决办法
9542
查看次数