相关疑难解决方法(0)

需要帮助更好地了解Moq

我一直在查看Moq文档,而且评论太短,我无法理解它可以做的每件事.

我没有得到的第一件事是 It.IsAny<string>(). //example using string

使用它有什么优势而不仅仅是增加一些价值?我知道有人说如果你不关心这个价值就用这个,但如果你不关心价值,你不能只做"一个"或者什么吗?这似乎更像打字.

其次,什么时候你会不关心价值?我认为Moq需要价值来匹配东西.

我根本没有得到什么It.Is<>或如何使用它.我不明白这个例子以及它试图展示的内容.

接下来,我没有得到何时使用Times(及其AtMost方法和类似).为什么要限制设置的次数?我有一些AppConfig价值,我需要使用两次.为什么我要将它限制为,比如一次?这只会使测试失败.这是为了阻止其他人在你的代码或其他东西中添加另一个吗?

我没有得到如何使用mock.SetupAllProperties(); 它设置属性是什么?

我也不明白为什么有这么多不同的方式来建立一个房产以及它们之间的区别.该文件有:

SetupGet(of property)
SetupGet<TProperty>
Run Code Online (Sandbox Code Playgroud)

我注意到,很多在Moq的东西展示()<>-什么是他们,他们看起来像在使用中有什么区别?

我也不明白为什么他们有SetupGet.你不会SetupSet用来设置房产吗? SetupSet有五种不同的方法可以在文档中使用它.另外一个叫SetupProperty.所以我不明白为什么会这么多.

另外,我想知道lambdas中使用的变量是否独立于其他lambdas.例如:

mock.setup(m => m.Test);
stop.setup(m => m.Test);
Run Code Online (Sandbox Code Playgroud)

这样可以,还是变量之间会有一些冲突m

最后,我正在观看这个视频,我想知道它是否显示Visual Studio.他的Intellisense看起来与众不同.一个灯泡为他弹出(我很高兴我没有,因为它带回了netbeans的痛苦回忆),并且有一条线从一个开口支架到闭合支架等.

谢谢 :)

c# lambda moq mocking

43
推荐指数
2
解决办法
1万
查看次数

Moq - 验证没有调用任何方法

这是使用NUnit和Moq从ASP.NET MVC项目中的一个控制器进行的单元测试:

[Test]
public void Create_job_with_modelstate_errors_fails()
{
    var job = new JobDto();
    this.controller.ModelState.AddModelError("", "");

    ActionResult result = this.controller.Create(job);

    this.jobService.Verify(p => p.SaveJob(It.IsAny<JobDto>()), Times.Never());

    // some other asserts removed for brevity
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但从维护的角度来看,我认为这一行比它需要的更冗长:

this.postService.Verify(p => p.SavePost(It.IsAny<PostDto>()), Times.Never());
Run Code Online (Sandbox Code Playgroud)

我真正希望能够做的是......

this.postService.VerifyNoMethodsCalled();
Run Code Online (Sandbox Code Playgroud)

...因为我感兴趣的是我的控制器不会调用服务上的任何方法.这可能使用Moq吗?

unit-testing moq mocking

35
推荐指数
2
解决办法
4952
查看次数

标签 统计

mocking ×2

moq ×2

c# ×1

lambda ×1

unit-testing ×1