MockRetrofit不允许避免网络错误

时间:2016-03-07 20:42:49

标签: mocking retrofit retrofit2

我使用MockRetrofit(改进2快照4)来模拟服务器apis。

NetworkBehavior networkBehavior = NetworkBehavior.create();

networkBehavior.setFailurePercent(1);
networkBehavior.setDelay(500, TimeUnit.MILLISECONDS);

MockRetrofit mockRetrofit = new MockRetrofit.Builder(retrofit)
    .networkBehavior(networkBehavior)
    .build();

BehaviorDelegate<FinderCommonApis> delegate = mockRetrofit.create(FinderCommonApis.class);
finderCommonApis = new MockFinderCommonApis(delegate);

我也在我的测试用例中使用这个模拟。我的测试用例因NetworkBehavior而间歇性失败。它引入了导致间歇性故障的网络错误。我想完全避免这种网络错误,但看起来我不能完全避免它。我甚至试图将失败百分比设置为0,但它不允许。因此,我将最低可能值设置为1.他们在NetworkBehavior中使MockRetrofit.Builder成为可选项,但它提供了自己的默认NetworkBehavior,这也会引入相同的网络错误。我检查了NetworkBehavior代码,他们已经把它作为最终类,所以我不能覆盖它。我没想到要避免这个问题。

我只是想知道如何完全避免使用NetworkBehavior。

1 个答案:

答案 0 :(得分:2)

  

我甚至尝试将失败百分比设置为0,但它不允许。

事实并非如此。请参阅:https://github.com/square/retrofit/blob/78897005be619c3b63d238bf5d0de0f1580d95d4/retrofit-mock/src/main/java/retrofit2/mock/NetworkBehavior.java#L106-L109

0是一个有效值,应该用于禁用所有失败。