1

関連オブジェクトのプロパティに基づいて、単一のビジネス オブジェクトをロードしようとしています。この場合、Material および Plant に対して単一の関係を持つ ExtendedMaterial があります。

このメソッドは AppServer クラスにあります。このコードで添付のテストを実行すると、正しい結果と合格のテストが得られますが、行のコメントを外すと Broker.GetBusinessObject<ExtendedMaterial>("Plant.PlantCode LIKE " + plantCode);

その後、例外が発生しますHabanero.Base.Exceptions.InvalidPropertyNameException : The given property name 'PlantCode' does not exist in the collection of properties for the class 'ExtendedMaterial'

私は何を間違っていますか?

    public ExtendedMaterial GetExtendedMaterial(string materialCode, string plantCode)
    {
      //  return Broker.GetBusinessObject<ExtendedMaterial>("Plant.PlantCode LIKE " + plantCode);
        return Broker.GetBusinessObjectCollection<ExtendedMaterial>("Plant.PlantCode LIKE " + plantCode).FirstOrDefault();

    }


    [Test]
    public void GetExtendedMaterial_WhenExists_ShouldReturnExtendedMaterial()
    {
        //---------------Set up test pack-------------------

        var material = CreateSavedMaterial();
        var plant = GetBOTestFactory<Plant>().CreateSavedBusinessObject();
        var extendedMaterial = CreateSavedExtendedMaterial(plant, material);
        IAppServer appServer = new AppServer(CreateDeviceManagerWithDevice());
        //---------------Assert Precondition----------------
        Assert.AreSame(plant, extendedMaterial.Plant);
        Assert.AreSame(material, extendedMaterial.Material);

        //---------------Execute Test ----------------------
        var actualExtendedMaterial = appServer.GetExtendedMaterial(material.Code, plant.PlantCode);
        //---------------Test Result -----------------------
        Assert.AreSame(extendedMaterial, actualExtendedMaterial);
    }
4

1 に答える 1

3

これは、DataAccessor が DataAccessorDB の場合に機能しますが、最近、いくつかの単体テストで、DataAccessorInMemory に対しては機能しないことに気付きました。データベースを使用してテストを試し、それが機能するかどうかを確認してください。そうでない場合は、http://redmine.habanerowiki.com/でバグを記録してください。

于 2011-06-03T10:22:35.007 に答える