語言

Assert.AddValueFormatter 方法

定義

多載

名稱 Description
AddValueFormatter(Func<Func<Object,String>,Func<Object,String>>)

註冊一個責任鏈價值格式化工廠。 工廠會接收 next 該格式化器並回傳新的格式化器;回傳的格式化器應該要麼產生它所處理的值的字串,要麼委派給 next 它不處理的值。 註冊範圍會針對當前非同步流量進行範圍,當回流 IDisposable 被處理時即移除。

AddValueFormatter<T>(Func<T,String>)

註冊一個自訂格式化器,控制 的 T 值在結構化斷言失敗訊息中呈現方式。 註冊範圍會針對當前非同步流(由 AsyncLocal<T>支援)進行,當回流 IDisposable 被處理時移除。

AddValueFormatter(Func<Func<Object,String>,Func<Object,String>>)

來源:
Assert.AddValueFormatter.cs

註冊一個責任鏈價值格式化工廠。 工廠會接收 next 該格式化器並回傳新的格式化器;回傳的格式化器應該要麼產生它所處理的值的字串,要麼委派給 next 它不處理的值。 註冊範圍會針對當前非同步流量進行範圍,當回流 IDisposable 被處理時即移除。

[System.Diagnostics.CodeAnalysis.Experimental("MSTESTEXP", UrlFormat="https://aka.ms/mstest/diagnostics#{0}")]
public static IDisposable AddValueFormatter(Func<Func<object?,string>,Func<object?,string>> factory);
public static IDisposable AddValueFormatter(Func<Func<object?,string>,Func<object?,string>> factory);
[<System.Diagnostics.CodeAnalysis.Experimental("MSTESTEXP", UrlFormat="https://aka.ms/mstest/diagnostics#{0}")>]
static member AddValueFormatter : Func<Func<obj, string>, Func<obj, string>> -> IDisposable
static member AddValueFormatter : Func<Func<obj, string>, Func<obj, string>> -> IDisposable
Public Shared Function AddValueFormatter (factory As Func(Of Func(Of Object, String), Func(Of Object, String))) As IDisposable

參數

factory
Func<Func<Object,String>,Func<Object,String>>

一個接收鏈中下一個格式化器並回傳格式器以安裝其前的函式。

傳回

IDisposable其處理方式會移除車牌。

屬性

例外狀況

factory 是 null。

備註

當你需要檢查超過單一類型(例如渲染任何實作標記介面的物件)或需要明確控制委派到 next時,可以使用這個超載。 在常見的「格式化特定類型」情況下,偏好 AddValueFormatter<T>(Func<T,String>)。

factory 是鏈建構器,而非格式化器本身:當註冊啟動時,每次產生值時都會呼叫(每次渲染時重建鏈條,以確保其他註冊的亂序處理會被尊重),而非註冊時只執行一次。 保持便宜且無副作用;在工廠外做任何昂貴的設定,並讓它回傳一個格式化器,關閉於預先計算的狀態。

適用於

AddValueFormatter<T>(Func<T,String>)

來源:
Assert.AddValueFormatter.cs

註冊一個自訂格式化器,控制 的 T 值在結構化斷言失敗訊息中呈現方式。 註冊範圍會針對當前非同步流(由 AsyncLocal<T>支援)進行,當回流 IDisposable 被處理時移除。

[System.Diagnostics.CodeAnalysis.Experimental("MSTESTEXP", UrlFormat="https://aka.ms/mstest/diagnostics#{0}")]
public static IDisposable AddValueFormatter<T>(Func<T,string?> formatter);
public static IDisposable AddValueFormatter<T>(Func<T,string?> formatter);
[<System.Diagnostics.CodeAnalysis.Experimental("MSTESTEXP", UrlFormat="https://aka.ms/mstest/diagnostics#{0}")>]
static member AddValueFormatter : Func<'T, string> -> IDisposable
static member AddValueFormatter : Func<'T, string> -> IDisposable
Public Shared Function AddValueFormatter(Of T) (formatter As Func(Of T, String)) As IDisposable

類型參數

T

渲染後的類型應該被客製化。

參數

formatter
Func<T,String>

一個函式,回傳字串表示以使用,或 null 直接切換到下一個註冊的格式化器(或當沒有其他格式化器處理該值時,則由內建渲染器)。

傳回

IDisposable其處理方式會移除車牌。

屬性

例外狀況

formatter 是 null。

範例

[TestMethod]
public void DateTimeFailureShowsKind()
{
    using var _ = Assert.AddValueFormatter<DateTime>(dt => $"{dt:O} [{dt.Kind}]");
    Assert.AreEqual(DateTime.UtcNow, DateTime.Now);
}

備註

Formatter 僅影響失敗訊息中值的呈現方式。 它們不會改變由斷言所執行的等號比較,例如 Assert.AreEqual。 要自訂平等,請使用現有 IEqualityComparer<T> 的超載。

註冊依序堆疊為最新排序:優先諮詢最近註冊的格式化者。 格式化器回歸 null 時會讓給下一個格式化器,最終交給內建渲染器。 null 數值總是由內建渲染器渲染 "null" ,且不會傳遞給使用者格式化器。

常見登記地點及其有效範圍:

  • 在 [TestMethod]:該測試方法(及其非同步延續)中。
  • [TestInitialize]:包含類別中的每個測試。
  • [ClassInitialize]: 所有包含類別中的測試。
  • [AssemblyInitialize]:包含組件內的所有測試。

適用於