当我创建两个包含地理列并使用 tSQlt.AssertEqualsTable 的表时,测试失败并显示:
失败:数据类型的运算符无效。运算符等于等于,类型等于地理。{,1}
有谁知道 tSQLt 是否支持用于表比较的地理数据类型?
当我创建两个包含地理列并使用 tSQlt.AssertEqualsTable 的表时,测试失败并显示:
失败:数据类型的运算符无效。运算符等于等于,类型等于地理。{,1}
有谁知道 tSQLt 是否支持用于表比较的地理数据类型?
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.
不兼容类型的列表是:
但是,几乎总是有解决方法。您可以在比较之前将该值转换为兼容的数据类型,如下例所示:
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
它目前不受支持,但将包含在下一个/未来版本中。