为什么我的测试通过?

时间:2016-05-19 12:21:23

标签: javascript angular jasmine rxjs observable

SUT只是:

@Injectable()
export class GetLocationService {

getPosition(): Observable<Object> {
    return Observable.create(observer => {
        navigator.geolocation.getCurrentPosition((pos: Position) => {
            observer.next(pos);
            observer.complete();
        }),
        () => {
            alert('Position is not available');
        },
        {
            enableHighAccuracy: true
        };
    });
}
}

我对它的测试如下:

export const POSITION_INFO_FAKE_JSON = {
coords: {
    latitude: 32,
    longitude: 27
}
};

describe('Get location service', () => {

beforeEachProviders(() => [
    GetLocationService
]);

it('should get current position', inject([GetLocationService],       (getLocationService) => {

    navigator.geolocation = <any>{ getCurrentPosition: function() {
        return Observable.create(observer => {
            observer.next({ json : function() { return POSITION_INFO_FAKE_JSON; }});
            observer.complete();
        });
    } };

    getLocationService.getPosition().subscribe(
        (pos: Position) => {
            expect(pos.coords.latitude).toBe(434);
            expect(pos.coords.longitude).toBe(23);
        });
}));

});

我不知道为什么这个测试总是通过,因为它肯定会失败。为什么呢?任何人都可以指出我在这里做错了什么?

0 个答案:

没有答案