OnPageEvenを定義して、実際に発生できるか単体テストできるでしょうか?
テスト対象のTriggerActionを作成する方法がありましたが、WPF用で使用できませんでした。(後部コード)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.UI.WebControls; namespace UnitEveTest { class Program { static void Main(string[] args) { } } public class User { public delegate void PageEventHandler(object sender, PageEventArgs e); public event PageEventHandler PageEvent; public User() { } public void OnPageEvent(PageEventArgs e) { PageEvent?.Invoke(this, e); } //下記でイベント発生が起こるかテストしたい 例) public void OnPageEvent1() { User user; user = new User(); this.OnPageEvent((PageEventArgs)null); } } } //******************************************************************************************** //下記にWPFでのメソッドを使用した例がありましたが、DelegeteCommandがWPF用のようで使用できません。 [TestMethod] public void TestMethod1() { // 1.検証用の変数を用意する var actual = false; // 2.テスト対象のTriggerActionを作成する var targetAction = new InvokeCommandAction(); // 3.TriggerActionにCommandを設定する。Commandが呼ばれた場合はactualがtrueになる targetAction.Command = new DelegateCommand(() => actual = true); // 4.イベントを発生させるコントロールを作成する。 var eventSource = new Button(); // 5.EventTriggerを作成する。 var trigger = new System.Windows.Interactivity.EventTrigger("Click"); // 6.EventTriggerにテスト対象のTriggerActionを追加する。 trigger.Actions.Add(targetAction); // 7.EventTriggerをボタンコントロールにアタッチさせ、SourceObjectを設定する。 trigger.Attach(eventSource); trigger.SourceObject = eventSource; // 8.ボタンのクリックイベントを発生させる eventSource.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); // trueならば、Commandは呼ばれている Assert.IsTrue(actual); }
回答1件
あなたの回答
tips
プレビュー