使用Moq,如何设置带有输入参数的方法调用作为具有预期属性值的对象? [英] Using Moq, how do I set up a method call with an input parameter as an object with expected property values?
问题描述
var storageManager = new Mock<IStorageManager>();
storageManager.Setup(e => e.Add(It.IsAny<UserMetaData>()));
Add()方法需要一个具有FirstName属性的UserMetaData对象.
The Add() method expects a UserMetaData object which has a FirstName property.
我想确保已传递FirstName为"FirstName1"的UserMetaData类型的对象.
I'd like to make sure that an object of type UserMetaData with the FirstName of "FirstName1" has been passed.
推荐答案
您可以使用Verify
.
示例:
验证是否从未使用UserMetaData
和FirstName
调用Add
!= "FirstName1"
:
Verify that Add
was never called with an UserMetaData
with FirstName
!= "FirstName1"
:
storageManager.Verify(e => e.Add(It.Is<UserMetaData>(d => d.FirstName!="FirstName1")), Times.Never());
验证带有FirstName
== "FirstName1"
的UserMetaData
至少调用过一次Add
:
Verify that Add
was called at least once with an UserMetaData
with FirstName
== "FirstName1"
:
storageManager.Verify(e => e.Add(It.Is<UserMetaData>(d => d.FirstName=="FirstName1")), Times.AtLeastOnce());
使用FirstName
== "Firstname1"
和LastName
== "LastName2"
验证Add
刚被调用一次:
Verify that Add
was called exactly once with FirstName
== "Firstname1"
and LastName
== "LastName2"
:
storageManager.Setup(e => e.Add(It.Is<UserMetaData>(data => data.FirstName == "FirstName1"
&& data.LastName == "LastName2")));
...
storageManager.VerifyAll();
这篇关于使用Moq,如何设置带有输入参数的方法调用作为具有预期属性值的对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!