2017-08-17 4 views
1

私はWebアプリケーションの単体テストを作成しています。誰かが存在しないかもしれないmongo文書を取得しようとすると、私のアプリが適切なエラーメッセージを返すかどうかを確認するテストケースを作りたいと思います。mongoでは、有効に見えるが_存在しない_idを持つことは可能ですか?

もう少しコンテキストを与えるために、Webアプリケーションは、mongoデータベース内のその項目の_idに基づいて、特定の項目に関する情報を返します。ユーザーは、すべてのアイテムが公開可能であるため、アイテムのIDを取得することができます。

私が知りたいのは、データベース内で照会できる_idを持つことは可能ですが、決して存在しないことですか?

可能であれば、mongo dbにクエリを行い、保証されるたびに適切なエラーメッセージを返すテストケースを作ることができます。今は、もはや存在しないアイテムに割り当てられたmongo _idを使用しています。

この_idのための私の要件は、ということである:それは通常_id

  • 2の同じ長さにする必要が

    • 1))には、( _idと同じ文字で構成する必要があります16進数)
    • 3)mongoが 文書に割り当てる実際のIDではありません。

    また、ユーザーが項目を作成するときに_idを割り当てることはできないことに注意してください。すべての_id割り当てはmongoによって処理されています。

    上記に該当する場合は、私は満足しています。

    私は考えることができるのは000000000000000000000000ですが、これが_idとして使用できるかどうかを確認できませんか?

  • 答えて

    1

    しかし、何らかの理由で、モンゴあなたは区別する必要があること_idに

    を割り当てることができないだろう、我々が提供する場合にMongoDBは、このIDを受け入れることは決してありません」「MongoDBは、このIDを生成することはありません」とそれ"。

    前者の場合、すべて0のオブジェクトIDの例は問題ありません。 MongodbはそのようなIDを生成しません(タイムスタンプ生成規則のため、他に何もない場合)。

    後者の場合は不可能です。 mongoオブジェクトIDは、基本的に無効または制限された値を持たない12バイトのバイナリBLOBです。すべての値が有効です。

    また、_idフィールドには、文字列、数値、オブジェクトID、オブジェクト、what-have-youなどのほとんどの値を使用できます。配列を除く。

    +0

    こんにちはセルジオ、答えをありがとう。私は今質問を更新しました。この場合、後者についてもっと心配しています。 mongoが_idをどのように割り当てるかを知ることは、私のテストケースのために_idを思い付くのに役立ちます。私が実際に探しているのは、自分の乳首のケースで使用できる_idです。このIDは、「この_idの項目はありません」というエラーメッセージを返すことがあります。 _idがタイムスタンプによって決定された場合、すべての_idがこれをカバーすべきです。 –

    +0

    @DavidOGrady "それは決して存在しないだろうか?" - もう一度、2つのケースを混同しないでください。このIDは、明示的に存在することができます(明示的に挿入した場合)。それはmongodbが単独でそれを生成しないことです。あなたがその区別を理解していることを確認するだけです。 –

    +0

    Webアプリケーションでは、ユーザーが項目を作成しようとするときに_idを割り当てることができないため、_idが明示的に挿入される心配はありません。フォローアップありがとう。 –

    関連する問題