我正在使用亚马逊帐户访问亚马逊图书的数据库。我的帐户仅用于此目的,我不使用它出售任何东西。尽管彼此之间有 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 错误是由亚马逊发送的,以防请求太快,而我的测试似乎并非如此。
谢谢你