Java TestObserver在单元测试中未获取数据
我已经为下课写了单元测试。测试中的TestObserver无法接收任何数据。我不知道该做什么Java TestObserver在单元测试中未获取数据,java,rx-java,rx-java2,Java,Rx Java,Rx Java2,我已经为下课写了单元测试。测试中的TestObserver无法接收任何数据。我不知道该做什么 public class DataLocationMonitor { private PublishSubject<Object> dataLocatorSubject; public DataLocationMonitor(...) { this.dataLocatorSubject = PublishSubject.create(); }
public class DataLocationMonitor {
private PublishSubject<Object> dataLocatorSubject;
public DataLocationMonitor(...) {
this.dataLocatorSubject = PublishSubject.create();
}
public Observable<Object> getObservable() {
return this.dataLocatorSubject;
}
public void handleData(Object data) {
if (data instanceof DataMessage) {
DataMessage message = new DataMessage(...);
this.dataLocatorSubject.onNext(message);
}
}
}
@RunWith(MockitoJUnitRunner.class)
public class DataLocationMonitorTest {
private DataLocationMonitor target;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
this.target = new DataLocationMonitor(...);
}
@Test
public void handleData_dataLocatorSubjectOnNextCalled() {
TestObserver<Object> observer= TestObserver.create();
Observable<Object> dataLocatorSubject = this.target.getObservable();
DataMessage data = new DataMessage();
this.target.handleData(data);
dataLocatorSubject.subscribe(observer);
observer.assertSubscribed();
observer.awaitCount(1);
observer.assertValueCount(1);
}
}
公共类DataLocationMonitor{
私人出版主体;
公共数据位置监视器(…){
this.dataLocatorSubject=PublishSubject.create();
}
公共可观察的getObservable(){
返回此.dataLocatorSubject;
}
公共无效handleData(对象数据){
if(数据消息的数据实例){
DataMessage消息=新的DataMessage(…);
this.dataLocatorSubject.onNext(消息);
}
}
}
@RunWith(MockitoJUnitRunner.class)
公共类DataLocationMonitorTest{
私有数据定位监控目标;
@以前
public void setUp(){
initMocks(this);
this.target=新的DataLocationMonitor(…);
}
@试验
public void handleData_datalocatorSubjectOnExtCalled(){
TestObserver=TestObserver.create();
Observable dataLocatorSubject=this.target.getObservable();
DataMessage数据=新的DataMessage();
此.target.handleData(数据);
dataLocatorSubject.subscribe(观察者);
observer.assertSubscribed();
观察员:人数(1);
观察者:资产价值计数(1);
}
}
当我运行测试时,我得到java.lang.AssertionError:值计数不同;预期:1,实际:0(闩锁=1,值=0,错误=0,完成=0,超时!)交换
this.target.handleData
和dataLocatorSubject.subscribe
行的顺序PublishSubject
不保留经过的项目,因此迟到的订户不会看到任何以前的onNext
'd项目
TestObserver=TestObserver.create();
Observable dataLocatorSubject=this.target.getObservable();
DataMessage数据=新的DataMessage();
//先订阅
dataLocatorSubject.subscribe(观察者);
//下一个信号
此.target.handleData(数据);
observer.assertSubscribed();
观察员:人数(1);
观察者:资产价值计数(1);
交换this.target.handleData
和dataLocatorSubject.subscribe
行的顺序PublishSubject
不保留经过的项目,因此迟到的订户不会看到任何以前的onNext
'd项目
TestObserver=TestObserver.create();
Observable dataLocatorSubject=this.target.getObservable();
DataMessage数据=新的DataMessage();
//先订阅
dataLocatorSubject.subscribe(观察者);
//下一个信号
此.target.handleData(数据);
observer.assertSubscribed();
观察员:人数(1);
观察者:资产价值计数(1);