1

我正在使用亚马逊帐户访问亚马逊图书的数据库。我的帐户仅用于此目的,我不使用它出售任何东西。尽管彼此之间有 2 秒的延迟,但我无法连续 5 次访问亚马逊 API:我收到 503 错误。

这是我的测试代码:

@Test
  public void testZERO_searchISBN_why503() throws Exception {

    //le livre recherché n' existe pas ou problème de communication avec Amazon
    setupSystemForTestsOfZERO_spyBookList();

    for (int i = 0; i < 5; i++) {
      execute(() -> statesManager.getState().searchISBN
              ("çè_ééàè\"à&à(à"));

      execute(() -> Thread.sleep(2000));
      execute(() -> statesManager.setZERO());
    }
    verify(bookList, times(5)).getBookByISBN("9782207301050");
  }

这里有一些解释:

  • 给 searchISBN() 的参数是 ISBN 代码,但是对于 azerty 键盘,数字会在同一键中转换为相应的字符。无论如何,这部分工作,没有问题。认为它是常规 ISBN 代码(“978xxxxxxxxxx”)
  • execute() 方法来自 assertJ Swing 测试框架,该语句在 EDT 中运行其 lambda 参数。运行测试时,我观察到 2 秒延迟,但我不确定这是让系统等待的正确说法
  • verify 语句来自 mockito,它验证注定将请求发送到亚马逊的内部方法被调用 5 次,并且只有 5 次:没有隐藏的调用可以证明 503 错误是合理的......

顺便说一句,正如我在 SO 某处看到的那样,503 错误是由亚马逊发送的,以防请求太快,而我的测试似乎并非如此。

谢谢你

4

0 回答 0