- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现测试 JUnit
的单元测试 ( Retrofit
) Observable
如果 Web 服务器返回 422 Unprocessable entity
.
我有以下 API 服务(我使用 retrofit.create(AccountService.class)
创建):
public interface AccountService {
@POST("users")
Observable<User> createNewUser(@Body User user, @Query("v_uuid") String vUuid, @Query("v_code") String vCode);
}
我从单元测试中调用这个服务:
Observable<User> observable = accountService
.createNewUser(newUser, "uuid", "code")
.subscribeOn(Schedulers.io());
我也用 TestSubscriber<User>
为了断言我的 Observable:
TestSubscriber<User> testSubscriber = new TestSubscriber<>();
observable
.observeOn(AndroidSchedulers.mainThread())
.subscribe(testSubscriber);
testSubscriber.awaitTerminalEvent();
// assert testSubscriber.getOnErrorEvents()
我使用 SchedulersHook
(通过 JUnit @Rule
)如以下博文所述:http://alexismas.com/blog/2015/05/20/unit-testing-rxjava/ .我用 Schedulers.immediate()
作为以下调度程序的替代:
Schedulers.io()
Schedulers.computation()
Schedulers.newThread()
AndroidSchedulers.mainThread()
但似乎测试永远不会完成。当我调用 observable.observeOn(AndroidSchedulers.mainThread()).subscribe(testSubscriber);
时挂起.同时,如果 Web 服务器以 2xx codes
响应,则此代码运行良好。 .另外,如果我删除自定义 SchedulersHook
从代码来看,即使服务器以 4xx codes
响应,它也能正常工作.
附加信息:我使用 MockWebServer为了模拟网络服务器,我从日志中看到 Retrofit
向服务器发送请求。我的Gradle
依赖项如下所示:
testCompile 'junit:junit:4.12'
testCompile 'org.robolectric:robolectric:3.1-SNAPSHOT'
testCompile 'com.squareup.okhttp3:mockwebserver:3.1.2'
compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxandroid:1.1.0'
compile 'com.squareup.okhttp3:okhttp:3.1.2'
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'
更新:深入研究后 rxjava
我发现使用 merge
运算符和不同Schedulers
(特别是,用 SchedulersHook
代替它们)导致无限 sleeps()
里面的某个地方 OperatorMerge.InnerSubscriber<T>
.
最佳答案
我终于弄清楚了代码永远不会完成的原因。感谢来自社区的 Dávid Karnok ( https://groups.google.com/forum/#!topic/rxjava/2rOHj1mvShk ):
What happens is that the RxRingBuffer's cleanup thread sleeps on the immediate scheduler, preventing any progress for other components.
There is a fundamental problem with immediate scheduler; it is not a real scheduler and due to its sleeping nature, it can cause unexpected hangs.
For testing operators, it is much better to use TestScheduler directly and avoid the use of RxJavaPlugins as much as possible.
在我切换到 TestScheduler
之后,一切都按预期开始工作。
还推荐使用依赖注入(inject)(Dagger 2
)来管理调度器
。
关于android - 如果发生 HttpException,Retrofit 和 RxJava 的单元测试永远不会完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35683177/
我无法获得针对我的应用程序的 ajax 请求的描述性错误消息。我不认为这是如何设置的。我已经尝试完全删除 Controller 方法,但在它接触 Controller 之前仍然失败。 我的路线: +-
我在测试项目中遇到了一些问题。C#、ASP .NET MVC 5、>NET Framework 4.5.1 出于某种原因,我的异常过滤器无法捕获 Controller 抛出的 HttpExceptio
我是 aspx 网络表单的新手。 我想在我的 Web 应用程序中捕获特定异常 - Viewstate MAC 验证失败。 我试过这个(在 Global.asax.cs 中): protected vo
我正在使用 Retrofit 向 API 发出一些请求,当我收到响应时,如果请求成功,通常会以这种格式从 API 收到响应 成功响应 { "success": 1, "error":
该文档建议引发带有客户端错误的 HTTPException,这很好。 但是如何在文档中遵循 HTTPException 的模型显示这些特定错误?意思是带有“详细信息”键的字典。 以下不起作用,因为 H
我正在尝试处理 http 错误,所以我创建了自定义 http 异常类 class HttpException implements Exception { final String message
我在2个不同的服务器上的项目中工作。该代码是从bitbucket克隆的,因此完全相同,但是在其中一个中,我在每个HTTP请求中均收到此错误: Couldn't connect to host, Ela
我正在尝试测试这个方法: private ServiceApiMetadata getConfig(final HttpServletRequest request, final String pat
我正在尝试使用 Windows 上的 AllegroGraph 客户端(版本 4.1.1)将 *.nt 文件导入 AllegroGraph。我使用 AllegroGraph WebView 应用程序来
我正在使用 ASP.NET MVC 3 开发 uploader 。我正在使用 AJAX 上传控件 (http://valums.com/ajax-upload/)。当我尝试通过 IE 上传大文件时,一
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Troubleshooting BadImageFormatException 我正在尝试编译我的解决方案,
我的 output.aspx 页面有时会出现以下错误: Exception Details: System.Web.HttpException: Request timed out. Source E
出于测试目的,我有这个方法: public ActionResult Index() { System.Diagnostics.Debug.Write("Index"); return
我在 Laravel 中进行单元测试的一个测试函数不断出错。我试图断言在不满足某些条件的情况下请求特定页面会触发 403 FORBIDDEN 错误。 我的测试用例函数是这样的: public func
httplib.HTTPException 是否有错误代码?如果是这样,我如何从异常实例中获取它们?感谢您的帮助。 最佳答案 httplib 模块不使用异常来传达 HTTP 响应,只是真正的错误(无效
我已经编写了一个自定义的 http 处理程序。我通过编写一个实现 IHttphandler 的类来完成此操作。 在那个类中我有这样的代码, context.Response.Clear(); cont
我在 Azure WebApp 中有一个 REST API。当 POST 发送到我的端点时,我会进行一些检查,如果需要,我会抛出 HttpException: throw new HttpExcept
当我对 ClaimsIdentity 中的某些声明执行“foreach”循环时遇到问题。当我单步执行它时 - 在它应该完成枚举时,我看到它返回到“in”,然后在我收到有关与 SQL Server 连接
function ValidateProductID(sender, args) { var productID = document.getElementById('').value;
我有一个 Silverlight/ASP 托管应用程序。当我开始时,我得到错误: HttpException occurred File does not exist. 这是昨天才开始发生的,我不知道
我是一名优秀的程序员,十分优秀!