मैं कुछ मौजूदा वर्गों से तर्क का परीक्षण करने की कोशिश कर रहा हूं। वर्तमान में कक्षाओं को फिर से कारक बनाना संभव नहीं है क्योंकि वे बहुत ही जटिल और उत्पादन में हैं।राइनो मोक्स आंशिक मॉक
मैं जो करना चाहता हूं वह एक मॉक ऑब्जेक्ट बनाता है और एक ऐसी विधि का परीक्षण करता है जो आंतरिक रूप से किसी अन्य विधि को कॉल करता है जो नकली करने के लिए बहुत मुश्किल है।
तो मैं केवल माध्यमिक विधि कॉल के लिए एक व्यवहार निर्धारित करना चाहता हूं।
लेकिन जब मैं विधि के लिए व्यवहार स्थापित करता हूं, तो विधि का कोड लागू होता है और विफल रहता है।
क्या मुझे कुछ याद आ रहा है या कक्षा के पुन: फैक्टर किए बिना परीक्षण करना संभव नहीं है?
मैं सभी विभिन्न नकली प्रकार (स्ट्रिक, स्टब, गतिशील, आंशिक ect।) की कोशिश की है लेकिन वे सभी विधि बुला अंत जब मैं व्यवहार स्थापित करने के लिए प्रयास करें।
using System;
using MbUnit.Framework;
using Rhino.Mocks;
namespace MMBusinessObjects.Tests
{
[TestFixture]
public class PartialMockExampleFixture
{
[Test]
public void Simple_Partial_Mock_Test()
{
const string param = "anything";
//setup mocks
MockRepository mocks = new MockRepository();
var mockTestClass = mocks.StrictMock<TestClass>();
//record beahviour *** actualy call into the real method stub ***
Expect.Call(mockTestClass.MethodToMock(param)).Return(true);
//never get to here
mocks.ReplayAll();
//this is what i want to test
Assert.IsTrue(mockTestClass.MethodIWantToTest(param));
}
public class TestClass
{
public bool MethodToMock(string param)
{
//some logic that is very hard to mock
throw new NotImplementedException();
}
public bool MethodIWantToTest(string param)
{
//this method calls the
if(MethodToMock(param))
{
//some logic i want to test
}
return true;
}
}
}
}
पूरी तरह से याद किया गया - आप बिल्कुल सही हैं। – tvanfosson
बस जोड़ने के लिए आप एक इंटरफेस से आंशिक नकली उत्पन्न नहीं कर सकते हैं। मॉक किए जाने वाले तरीकों को वास्तव में वर्चुअल चिह्नित किया जाना चाहिए। –