2
我是測試的巨大支持者,我認爲必須創建額外的界面才能夠編寫單元測試,所付出的代價很小。我已經添加了結構映射automocker到測試套件,它似乎絕對不能模擬類。只要公共方法被標記爲虛擬,犀牛模擬就能夠嘲笑公共課程。如何在沒有使用StructureMap的AutoMocker的接口的情況下模擬一個類?
我想擺脫接口,如果可能的話。任何和所有幫助表示讚賞。
我是測試的巨大支持者,我認爲必須創建額外的界面才能夠編寫單元測試,所付出的代價很小。我已經添加了結構映射automocker到測試套件,它似乎絕對不能模擬類。只要公共方法被標記爲虛擬,犀牛模擬就能夠嘲笑公共課程。如何在沒有使用StructureMap的AutoMocker的接口的情況下模擬一個類?
我想擺脫接口,如果可能的話。任何和所有幫助表示讚賞。
在我回答這個問題之前,我只想指出,當你不使用接口時,它完全違背了使用StructureMap的目的。 (嗯,不完全是這樣,但是它的用途足以讓我質疑爲什麼你決定首先使用StructureMap ......)在沒有接口的情況下,如果沒有接口,或者如果沒有接口你會這樣做,你將把所有的邏輯放在一個類或20-30個類中緊密耦合在一起,這又缺少了使用StructureMap的要點。話雖如此,我認爲這應該在需要剔除具體類別的情況下起作用
[Test]
public void TestMethod()
{
// Arrange
var service = new RhinoAutoMocker<BusinessRuleService>();
service.PartialMockTheClassUnderTest();
service.ClassUnderTest.Expect(x => x.VirtualMethodImTesting());
// Act
service.ClassUnderTest.CallableMethod();
// Assert
service.ClassUnderTest.VerifyAllExpectations();
// ... or other stuff ...
}