Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 莫林参考变量_Vb.net_Unit Testing_Mocking_Moq - Fatal编程技术网

Vb.net 莫林参考变量

Vb.net 莫林参考变量,vb.net,unit-testing,mocking,moq,Vb.net,Unit Testing,Mocking,Moq,我们开始看到测试驱动开发的好处,并决定采取第一步,允许TDD驱动我们的设计。AKA只是测试,希望一旦我们看到了测试的好处,以及拙劣的模仿让我们设计得很好,我们就会远离它们,重新考虑。。不管怎样,雅达雅达 我发现了一些相似的主题,但没有什么是我真正可以构建的。我有以下几点: <Test()> Public Sub TestMockWithReferenceVariable() Dim expected As New Dictionary(Of String, Object)

我们开始看到测试驱动开发的好处,并决定采取第一步,允许TDD驱动我们的设计。AKA只是测试,希望一旦我们看到了测试的好处,以及拙劣的模仿让我们设计得很好,我们就会远离它们,重新考虑。。不管怎样,雅达雅达

我发现了一些相似的主题,但没有什么是我真正可以构建的。我有以下几点:

<Test()>
  Public Sub TestMockWithReferenceVariable()
   Dim expected As New Dictionary(Of String, Object)
   expected.Add("test", 1)
   Dim pass As New Dictionary(Of String, Object)


   Dim mock = New Moq.Mock(Of ITestDM)()
   mock.Setup(Function(m) m.Load(Of String)("test", pass)).Returns("Test")

   Dim sing As New DMSinglton(mock.Object)
   Dim result As String = sing.Load(Of String)("test", pass)

   Assert.AreEqual("Test", result)
   Assert.AreEqual(expected, pass)
  End Sub



 Public Interface ITestDM
  Function Load(Of T)(ByVal sp As String, ByVal params As Dictionary(Of String, Object)) As T
 End Interface

有没有一种方法可以让我使用Moq将传入的字典更改为另一个字典,从而允许这些测试通过?

您可以在Moq之外通过使用单元测试框架中的集合支持来完成此操作。我可以想出至少两种方法来实现这一点,使用MsTest或使用Sequensequals Linq方法

Dictionary<string, string> dict = new Dictionary<string, string> { { "test", "test" } };
Dictionary<string, string> dict2 = new Dictionary<string, string> { { "test", "test" } };
//MsTest CollectionAssert tests if two collections contain the same elements
CollectionAssert.AreEquivalent(dict, dict2);
//Another way to do the same thing - using SequenceEquals
Assert.IsTrue(dict.SequenceEqual(dict2));

假设dictionary override Equals方法中使用的引用类型,这将使workValue类型立即生效

我不理解您的示例,因为不清楚“DMSinglton”类做什么,以及测试到底想要断言什么。请编辑。顺便说一句:如果根据设计模式,“DMSinglton”真的是一个单例,那么就不能调用“new”。