c# - WPF MVVM-單元測試命令-私人與公共方法?




unit-testing icommand (2)

就個人而言,我會用私人方法去,我會告訴你為什麼。 你正在公開一個ICommand ,對我來說,在調用一個Execute之前,消費視圖應該調用一個CanExecute。 如果他們不這樣做,那麼他們就會違背原子能機構的規定,並在腳下開槍,而這一點已經沒有了。 就好像有人用反思來設置一個重要的私有變量,從而導致你的課堂設計失效,因為這樣... ...在自己的腳下開槍。 那麼為什麼要讓這些成員保密 因為不需要公開那些不應該被直接調用的成員。

基本上,當你單獨測試你不這樣做的成員時,你是按照API為成員執行的方式來做的。 所以,你不是真的在測試這個成員,而且你正在測試這個命令,這也意味著它們應該按照以下順序進行測試:

if (CanExecute)
{
    Execute;
}

基本上,如果我使用MVVM並公開ICommands,我的代表應該公開還是私人?


我會讓它們變成私有的 - 它們不是你的類的公共接口的一部分 ,這就是公共ICommand屬性的作用。





icommand