আমি সি # তে ইউনিট পরীক্ষায় মোটামুটি নতুন এবং মোক ব্যবহার করতে শিখছি। নীচে ক্লাসটি যা আমি পরীক্ষার চেষ্টা করছি is
class MyClass
{
SomeClass someClass;
public MyClass(SomeClass someClass)
{
this.someClass = someClass;
}
public void MyMethod(string method)
{
method = "test"
someClass.DoSomething(method);
}
}
class Someclass
{
public DoSomething(string method)
{
// do something...
}
}
নীচে আমার টেস্টক্লাসটি রয়েছে:
class MyClassTest
{
[TestMethod()]
public void MyMethodTest()
{
string action="test";
Mock<SomeClass> mockSomeClass = new Mock<SomeClass>();
mockSomeClass.SetUp(a => a.DoSomething(action));
MyClass myClass = new MyClass(mockSomeClass.Object);
myClass.MyMethod(action);
mockSomeClass.Verify(v => v.DoSomething(It.IsAny<string>()));
}
}
আমি নিম্নলিখিত ব্যতিক্রম পাই:
Expected invocation on the mock at least once, but was never performed
No setups configured.
No invocations performed..
আমি কেবল যাচাই করতে চাই যে পদ্ধতিটি "মাইমাথোড" বলা হচ্ছে কিনা। আমি কিছু অনুপস্থিত করছি?
দুঃখিত..আমি আমার প্রশ্ন সম্পাদনা করেছি ..
—
ব্যবহারকারীর141510
আপনি সঠিক পথে রয়েছেন তবে পোস্ট কোডটিতে বাগ রয়েছে। এটি সংকলন করবে না - সোমক্লাসে কেসিং, ডসোমথিং-এ অকার্যকর রিটার্ন। এর পরে আপনার সর্বজনীন অ্যাক্সেস প্রয়োজন, তারপরে ডসোমিংটি ভার্চুয়াল করুন। সংক্ষেপে আপনার সম্ভবত সম্ভবত আপনার প্রোডাকশন কোডটিতেও একটি বাগ রয়েছে।
—
ট্রুউইল
আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ. মক পদ্ধতিটি সেট আপ করার সময় আমি যুক্তিগুলি ভুল করে
—
দিচ্ছিলাম
"কোনও সেটআপ কনফিগার করা নেই" " বিভ্রান্তিকর হতে পারে। যে পদ্ধতিগুলির জন্য ডাকা হবে তার জন্য আপনার কোনও আচরণ সেটআপ করার দরকার নেই। এবং মনে রাখবেন যে আপনি যা পরীক্ষা করছেন তার পরে "যাচাই করুন" পদ্ধতিটি কল করা উচিত (যাতে এটি আপনার ক্ষেত্রে ঠিক আছে)।
—
সিলু
SomeClass
সংজ্ঞা না থাকলে এটি সংকলন করবে নাMyMethod(string)
, যা দেখে মনে হচ্ছে এটি এটি না।