1

geography 列を含む 2 つのテーブルを作成し、tSQlt.AssertEqualsTable を使用すると、テストは次のように失敗します。

失敗しました: データ型の演算子が無効です。演算子が等しい、型が地理に等しい{,1}

tSQLt がテーブル比較の地理データ型をサポートしているかどうかは誰にもわかりませんか?

4

2 に答える 2

2

その後、tSQLt が更新され、互換性のないデータ型に関するより詳細なエラー メッセージが含まれるようになりました。互換性のないデータ型のいずれかを使用すると、次のメッセージが表示されます。

(Error) The table contains a datatype that is not supported for 
tSQLt.AssertEqualsTable. Please refer to http://tsqlt.org/user-
guide/assertions/assertequalstable/ for a list of unsupported datatypes.

互換性のないタイプのリストは次のとおりです。

  • XML
  • 文章
  • NText
  • 画像
  • 地理
  • ジオメトリ
  • 行バージョン
  • Comparable と Byte Ordered の両方としてマークされていない CLR データ型

ただし、ほとんどの場合、回避策があります。次の例のように、比較する前に値を互換性のあるデータ型に変換できます。

EXEC tSQLt.NewTestClass 'DeliveryTests';
GO

CREATE PROCEDURE DeliveryTests.[test Order is matched to Customer location]
AS
BEGIN
  EXEC tSQLt.FakeTable 'Sales.Customers';
  EXEC tSQLt.FakeTable 'Sales.Orders';

  INSERT INTO Sales.Customers (CustomerId, Location) 
       VALUES (1, geography::Point(47.65100, -122.34900, 4326));
  INSERT INTO Sales.Orders (OrderId, CustomerId) 
    VALUES (5, 1);

  SELECT OrderId, Location.ToString() AS Location
    INTO DeliveryTests.Actual
    FROM Delivery.OrderDestinations;

  SELECT TOP(0) *
    INTO DeliveryTests.Expected
    FROM DeliveryTests.Actual;

  INSERT INTO DeliveryTests.Expected (OrderId, Location) 
     VALUES (5, geography::Point(47.65100, -122.34900, 4326).ToString());

  EXEC tSQLt.AssertEqualsTable 'DeliveryTests.Expected', 
                               'DeliveryTests.Actual';
END;
GO
于 2013-10-20T16:34:03.820 に答える
0

現在サポートされていませんが、次のリリースまたは将来のリリースに含まれる予定です。

于 2012-08-22T07:58:15.367 に答える