में अपेक्षित पैरामीटर मानों की पुष्टि करने के लिए सत्यापन का उपयोग करना मैं यह सत्यापित करने की कोशिश कर रहा हूं कि किसी मॉक के भीतर एक विधि अपेक्षित ऑब्जेक्ट पैरामीटर के साथ कॉल की जाती है। मैं Moq, nUnit का उपयोग कर रहा हूं, और सोच रहा हूं कि ऑटोफिक्चर की लचीलापन को नौकरी मिलनी चाहिए। नीचे जो मैं करने की कोशिश कर रहा हूं उसका सरलीकृत संस्करण नीचे है।Moq mock class
क्या ऑटोफिक्चर के साथ ऐसा करने का कोई तरीका है? क्या सत्यापित करने के लिए कोई बेहतर तरीका है कि Something
उचित पैरामीटर के साथ बुलाया जाता है?
अधिभावी A
कक्षा में बराबर संपत्ति मूल्यों की तुलना और Verify
लाइन को बदलने के लिए:
barMock.Verify(m => m.Something(a));
गुजरता है, तथापि मैं नहीं बल्कि हावी नहीं होता अपने प्रोजेक्ट में एक की तरह हर कक्षा में बराबर होती है।
namespace Test
{
using Moq;
using NUnit.Framework;
using Ploeh.SemanticComparison.Fluent;
public class A
{
public int P1 { get; set; }
}
public interface IBar
{
void Something(A a);
}
public class Foo
{
public A Data { get; private set; }
public void DoSomethingWith(IBar bar)
{
Data = new A { P1 = 1 };
bar.Something(Data);
}
}
[TestFixture]
public class AutoFixtureTest
{
[Test]
public void TestSample()
{
var foo = new Foo();
var barMock = new Mock<IBar>();
var a = new A { P1 = 1 };
var expectedA = a.AsSource().OfLikeness<A>();
foo.DoSomethingWith(barMock.Object);
expectedA.ShouldEqual(foo.Data); // passes
barMock.Verify(m => m.Something(expectedA.Value)); // fails
}
}
}
+1 विशेष रूप से आखिरी समाधान लिकनेस के साथ सही दृष्टिकोण है। FWIW Likeness के लिए एक नई कार्यक्षमता के लिए एक कार्य आइटम है जो इसे एक प्रॉक्सी को गतिशील रूप से निकालने में सक्षम बनाता है जो समानता को ओवरराइड करता है, जो उपर्युक्त वाक्यविन्यास को बहुत सरल बनाता है: http://autofixture.codeplex.com/workitem/4230 –
ऐसा हुआ, धन्यवाद ! – jaminto