1

このテストが失敗する理由を追跡できません。

def test_CreateViewPost(self):
    user = self.client.login(username="g",password="g")

    # this method creates a poi type and returns it for me
    poiType = self.stubPOIType()
    # this creates a point (django.contrib.gis.geos.Point)
    point = Point(10,10)

    response = self.client.post(reverse("createPOI"),{"name":"testPOI",
                                                      "description":"description",
                                                      "type":poiType,
                                                      "geometry":point})

    # the post is failing. I have errors in my form
    self.assertTemplateUsed(response,"gazetteer/detailPOI.html")
    self.assertEqual(response.status_code,302)

    self.assertEqual(POI.objects.count(),1)

これはモデルです:

class POI(models.Model):
    name = models.CharField(max_length=128,verbose_name=u"Nome")
    description = models.CharField(max_length=1024,verbose_name=u"Descrição",null=True,blank=True)
    type = models.ForeignKey(POIType,verbose_name=u"Tipo de Ponto")
    geometry = models.PointField(verbose_name=u"Geometria",srid=4291)
    geohash = models.CharField(max_length=64,verbose_name=u"GeoHash",editable=False)

    objects = models.GeoManager()

フォームから 2 つのエラーが返されます。フィールド ジオメトリとタイプにそれぞれ「無効なジオメトリ値」と「無効な選択」です。それらを投稿に渡していますが、失敗しています。

任意のヒント?

編集:「無効なジオメトリ値」の失敗を追跡しました。これは、フォームが実際の G​​EOS ポイントではなくテキスト (WKT フォーム) を期待していることです。実際の.wktを追加しましたが、うまくいきました。しかし、外部キーはどうですか?pk を渡す必要がありますか?

なんで?

4

1 に答える 1

0

django 単体テストを作成する場合、完全なオブジェクト (外部キー オブジェクト) をポスト データに渡すことはできません。プリミティブ (id/pk) を渡す必要があります。

ジオメトリの場合も同じです。その WKT 表現を渡す必要があります。

そう:

def test_CreateViewPost(self):
    user = self.client.login(username="g",password="g")

    # this method creates a poi type and returns it for me
    poiType = self.stubPOIType()
    # this creates a point (django.contrib.gis.geos.Point)
    point = Point(10,10)

    response = self.client.post(reverse("createPOI"),{"name":"testPOI",
                                                      "description":"description",
                                                      "type":poiType.pk,
                                                      "geometry":point.wkt})

    # the post is failing. I have errors in my form
    self.assertTemplateUsed(response,"gazetteer/detailPOI.html")
    self.assertEqual(response.status_code,302)

    self.assertEqual(POI.objects.count(),1)
于 2012-04-12T03:31:32.067 に答える