我正在使用Moq为项目编写单元测试,当我尝试验证DateTime属性是否被赋值时,其中一个测试失败.这是我的验证(失败):
_mockTaskContext.Verify(context => context.TaskQueue.AddObject(It.Is<TaskQueueItem>(
task_queue => task_queue.TaskCode == (int)TaskCode.MyTask
&& task_queue.ClientID == ExpectedClientID
&& task_queue.JobNumber == It.IsAny<int>()
&& task_queue.Requester == String.Empty
&& task_queue.JobStatus == (int)JobStatus.Submitted
&& task_queue.TimeQueued == It.IsAny<DateTime>()
&& task_queue.TimeStarted == new DateTime(1900, 1, 1)
&& task_queue.TimeStopped == new DateTime(1900, 1, 1)
&& task_queue.TaskParameters == expectedTaskParam
)), Times.Once());
Run Code Online (Sandbox Code Playgroud)
如果我评论了期望,task_queue.TimeQueued则测试通过,而不对我的测试进行任何其他更改.另外,如果我改变无论是要求TimeStarted还是TimeStopped从new DateTime(1900, 1, 1)到It.IsAny<DateTime>(),测试失败.我在单元测试之外使用实际实现而不是模拟存储库运行测试中的代码,并TimeQueued正确地分配其值.任何想法为什么It.IsAny似乎没有正确的DateTime属性,或我是否错误地设置我的期望?
更新:我在其他测试中使用It.IsAny()没有任何问题,但此测试仍然失败.我想这可能是因为这是在It.Is lambda表达式中,但我不知道如何解决这个问题.
我想将XML文件作为节点树读入内存,我可以在其上执行进一步的操作.像C#的东西XDocument.什么是Java等价的C#XDocument.Load?