在我的 WPF 應用程式中,我有一個MainWindow.xaml和一個相關的MainWindow.xaml.cs. 后者具有DatabaseAccessor訪問資料庫的屬性:
public partial class MainWindow : System.Windows.Window
{
public IDatabaseAccessor DatabaseAccessor { get; set; }
public MainWindow()
{
InitializeComponent();
DatabaseAccessor = new RealDatabaseAccessor();
}
// [...]
}
現在我正在使用 FlaUI 撰寫測驗。在我的測驗中,我正在寫類似
using FlaUI.UIA3;
using Moq;
var app = FlaUI.Core.Application.Launch("myapp.exe");
using (var automation = new UIA3Automation())
{
FlaUI.Core.AutomationElements.Window window = app.GetMainWindow(automation);
//// I am looking for a way to do something like this (but no such API exists):
// MainWindow myWindow = (MainWindow) window.RealWindow;
// myWindow.DatabaseAccessor = new Mock<IDatabaseAccessor>().Object;
}
對于我的測驗,我不想與真實資料庫通信,而是模擬它。
如何將模擬注入DatabaseAccessor使用 FlatUI 打開的視窗(請參閱我最后一個片段中的注釋代碼)?或者換句話說:我怎樣才能訪問System.Windows.Window給定的FlaUI.Core.AutomationElements.Window?
如果這是不可能的,您將如何處理這樣的問題?
uj5u.com熱心網友回復:
你需要重新考慮你在這里做什么。
UI自動化測驗不應該模擬依賴項。它在一個單獨的行程中啟動您的應用程式,并使用螢屏上顯示的實際元素與其互動。
如果要測驗代碼中的特定組件,則應針對該組件撰寫單元測驗。然后,您可以模擬任何外部依賴項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/466566.html
上一篇:AvalonDockDocumentHeaderTemplate不適用于浮動視窗
下一篇:獲取空陣列
