这两项测试似乎有效(至少在我的情况下)
这两种方法之间是否存在一些具体差异? 以及如何决定我应该使用的那个(使用Http测试服务的最佳实践)?
1。使用MockBackend方法
let backend: XHRBackend;
let defaultOptions: BaseRequestOptions;
let http = new Http(backend, defaultOptions);
it('#getResources should get an items list', async(() => {
const spy = spyOn(http, 'get')
.and.returnValue(
Observable.of(new Response(new ResponseOptions({
body: {items: ['foo','bar']}
}))
));
let service = new MyService(http);
service.getResources('/foobar').subscribe(items => {
expect(items).toEqual(['foo','bar']);
});
}));
2。使用spyOn()。和.returnValue()方法
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
Glide.with(this).load(R.drawable.dancingbanana).into(imageViewTarget);
}
答案 0 :(得分:2)
使用MockBackend
因为您可能还应测试其他内容,例如网址正确,添加了正确的标头等等。所有这些都可以从{{3}获取来自MockConnection
TestBed.get(MockBackend).connections
.subscribe((connection: MockConnection) => {
const request = connection.request;
expect(request.url).toBe(...)
})
);
这些是您应该测试的内容,因为拥有意外的网址会导致请求在应用中失败。所以你应该测试它。以及标题,以及与请求相关的任何其他内容。