假設我有一個類「ClassA」,它對類「ClassB」(注入到ClassA的ctr)有依賴性。我想嘲笑ClassB,以便我可以單獨測試ClassA。這兩個班都是內部的。用Moq模擬內部類進行單元測試
糾正我,如果我錯了,但它看起來像Moq只能嘲笑一個類,如果它是公開的,它有一個公共無參數構造函數,被嘲笑的方法是public virtual
。我不想讓這些課程公開顯示。我是否錯過了Moq的一些東西,或者它不適合我想要做的事情?
我想我可以創建一個ClassB實現的接口(比如說「IClassB」),將它注入到ClassA中,然後模擬接口。 ClassB仍然可以是內部的(儘管我意識到接口方法必須公開)。雖然這會起作用,但我對創建大量接口感到不安,它的唯一目的是支持單元測試嘲弄。思考?
有用的知道,謝謝。不過,我現在決定讓這些課程公開(至少是那些正在測試的課程)。我想我已經試圖將所有東西都放在內部,但它只是一個桌面應用程序,所以它不像在一個給客戶的組裝/ API中那樣重要。 –
非常有用的帖子,我很InternalsVisibleTo(「IntegrationTests」)不能正常工作。然後它有道理,它不是我的程序集訪問它,而是Castle的動態創建的程序集。 –