[英]Unittesting a table to determine that there are more than one record
我正在嘗試創建一個Assert.AreEqual
查詢,該查詢確定給定表中的記錄確實包含>= 1
(行/記錄)
我知道查詢會隨着以下時間的變化而變化:
Assert.AreEqual(context.Count().Ticket_Number >= 1);
要么
Assert.AreEqual(context[row].Ticket_Number.Count() >= 1);
該查詢返回10,000 +行:
SELECT [Ticket_Number] FROM dbo.SRS_Ticket_LifeCycle_Stage
我要確保該查詢具有多於1條記錄(對於緊隨其后的測試,期望什么都不會返回)。
我不知道如何使用這些語句來專門針對行,因此不勝感激。
我認為您想要的是這樣的方法來獲取計數(然后將結果存儲在變量中以使代碼更簡潔):
SELECT COUNT([Ticket_Number]) FROM dbo.SRS_Ticket_LifeCycle_Stage
現在使用
Assert.IsTrue(resultFromSqlQuery >= 1);
如果您要測試比較,則可能要使用Assert.IsTrue
而不是AreEqual
因為您實際上並未在測試是否相等。 假設您可以將記錄計數放入一個名為recordCount的單獨變量中:
Assert.IsTrue (recordCount >= 1);
對於這么多的行,您應該使用LINQ to SQL來過濾查詢,以僅返回1個結果,以最大化性能。
Assert.IsTrue(sqlContext.TableName.FirstOrDefault(row => row.PrimaryKey != null) != null);
我們將表的第一行包含一個非空的PK,如果有結果,則測試將通過。
通常,確定某項記錄是否存在多個記錄的SQL方法是使用EXISTS
關鍵字:
IF EXISTS(SELECT [Ticket_Number] FROM dbo.SRS_Ticket_LifeCycle_Stage)
-- do something
或者,您可以使用COUNT
獲取記錄數:
SELECT COUNT([Ticket_Number]) FROM dbo.SRS_Ticket_LifeCycle_Stage
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.