0

JsTestDriver を使用して地理位置情報をテストしています。これが私のコードです。

GeoLocationTest.prototype.testLocation = function(){
    expectAsserts(1);
    var coordinate = new Coordinate();
    var location = coordinate.getLocation();
    assertEquals("1,1",location);
};

テストは、ジオロケーション座標を取得する前にすぐにテストされるため、常に失敗します。タイムアウトを使用してみましたが、テストもすぐに実行されます。

setTimeout(function(){assertEquals("1,1",location);},10000);

そして、これは私がテストしようとしているJavaScriptです

function Coordinate () {
    this.latitude = 0.0;
    this.longitude = 0.0;
    this.date = new Date();
    this.errorMsg = "";
} 

Coordinate.prototype.getLocation = function(){
    if (this.isBrowserSupported()){ //this test passes
        navigator.geolocation.getCurrentPosition(this.setPosition,this.setError);
        return "" + this.latitude + "," + this.longitude;
    }
    return "Browser not supported";
}

Coordinate.prototype.setPosition = function(position){
   this.latitude = position.coords.latitude;
   this.longitude = position.coords.longitude;
}

AssertError: "1,1" が必要でしたが、"0,0" でした

4

1 に答える 1

0

私はそれを間違っていました、JSが嫌いです

function Coordinate () {
    latitude = 0.0;
    longitude = 0.0;
    date = new Date();
    errorMsg = "";
} 

Coordinate.prototype.getLocation = function(){
    if (this.isBrowserSupported()){ //this test passes
        navigator.geolocation.getCurrentPosition(this.setPosition,this.setError);
        return 0;
    }
    return -1;
}

Coordinate.prototype.setPosition = function(position){
   Coordinate.prototype.latitude = position.coords.latitude;
   Coordinate.prototype.longitude = position.coords.longitude;
}

そして、テスト

GeoLocationTest.prototype.testLocation = function(){
    var timeout = 10000;
    expectAsserts(2);
    var coordinate = new Coordinate();
    coordinate.getLocation();
    setTimeout(function(){
        assertEquals(1,Coordinate.prototype.latitude);
        assertEquals(1,Coordinate.prototype.longitude);
        console.log("testLocation finished");
    },timeout);
};

JsTestDriver は、「AssertError: Expected '2' asserts but '0' occured.」を出力します。

ブラウザを開き、コンソールを開いて、テストが実行されるのを待ちます。テストに合格した場合は何も起こらず、失敗した場合は失敗を出力するため、最後のログを追加しました。

于 2013-09-15T22:59:52.630 に答える