2017-12-18 36 views
2

我想模擬使用typeMock的方法調用。我在不同情況下嘲笑了方法,但每次我都得到相同的結果。以下是代碼:c#typemock採取了最後一種情況的嘲笑結果

[TestFixture] 
public class HomeControllerSpec 
{ 
    User _fakeUser; 
    ProfileSettingsBL _profileSettingBL = null; 

    [SetUp] 
    public void SetUp() 
    { 
     // Inital setup 
    } 


    [TestCase] 
    public void DisconnectOutlookCalendarForUserRegisterWithEmail() 
    { 
     _fakeUser = new User(); 
     _fakeUser.LoginType = 4; // This is be different in each case 

     Isolate.WhenCalled(() => _profileSettingBL.RetrieveUserProfile()).WillReturn(_fakeUser); 

     HomeController ctrl = new HomeController(); 
     var result = ctrl.Disconnect(); 

     Assert.IsTrue(result.Content); 
    } 



    [TestCase] 
    public void DisconnectOutlookCalendarForUserRegisterWithName() 
    { 

     _fakeUser = new User(); 
     _fakeUser.LoginType = 5; // This is be different in each case 

     Isolate.WhenCalled(() => _profileSettingBL.RetrieveUserProfile()).WillReturn(_fakeUser); 

     HomeController ctrl = new HomeController(); 
     var result = ctrl.Disconnect(); 

     Assert.IsTrue(result.Content); 
    } 

} 

當不同的測試案例調用的HomeController的Disconnect方法我得到_fakeUser.LoginType == 4始終。但是當我刪除一個測試用例時,兩種情況都完美無缺。

任何想法?

+0

您正在測試之間使用共享變量。使'_fakeUser'在本地測試,你應該沒問題。 – Nkosi

回答

1

也許你可以嘗試使用[Isolated]屬性? 它指示Typemock隔離器在測試完成後清理測試結果。