MongoDB WriteConcernResult 怎么会被嘲笑呢?
How can MongoDB WriteConcernResult Be mocked?
我正在尝试通过 Insert()
;
模拟 WriteConcernResult
returned
A WriteConcernResult
由我的提供商 return 编辑,Insert()
通过添加用户调用:
private readonly IMongoProvider _repository;
public UserRepository(IMongoProvider repository)
{
_repository = repository.ForCollection("User");
}
public bool AddUser(UserModel user)
{
var result = _repository.Insert(user);
return result.DocumentsAffected > 0;
}
MongoDB WriteConcernResult
class:
public WriteConcernResult(BsonDocument response)
{
_response = Ensure.IsNotNull(response, nameof(response));
}
public long DocumentsAffected
{
get
{
BsonValue value;
return _response.TryGetValue("n", out value) ? value.ToInt64() : 0;
}
}
因为 DocumentsAffected
没有 setter 我不确定如何设置我的模拟值 return。
{
var user = new UserModel {Name = "Test"};
_mockMongoProvider = MockRepository.GenerateMock<IMongoProvider>();
//mock writeConcernResult
var result = _repo.AddUser(user);
Assert.That(result, Is.True);
}
有了 setter 我可能会这样嘲笑:
_mockMongoProvider.Stub(p => p.Insert(user))
.Return(new WriteConcernResult(
new BsonDocument()
).DocumentsAffected = 1);
任何指导都会很有帮助,干杯。
实际上你根本不需要模拟 WriteConcernResult
class。
您所要做的就是初始化 WriteConcernResult
的一个实例,如下所示:
var document = new BsonDocument();
document.Add("n", new BsonInt64(1));
var writeConcernResult = new WriteConcernResult(document);
然后您必须将您的模拟存储库设置为 return 这个实例:
_mockMongoProvider.Stub(p => p.Insert(user))
.Return(writeConcernResult );
我正在尝试通过 Insert()
;
WriteConcernResult
returned
A WriteConcernResult
由我的提供商 return 编辑,Insert()
通过添加用户调用:
private readonly IMongoProvider _repository;
public UserRepository(IMongoProvider repository)
{
_repository = repository.ForCollection("User");
}
public bool AddUser(UserModel user)
{
var result = _repository.Insert(user);
return result.DocumentsAffected > 0;
}
MongoDB WriteConcernResult
class:
public WriteConcernResult(BsonDocument response)
{
_response = Ensure.IsNotNull(response, nameof(response));
}
public long DocumentsAffected
{
get
{
BsonValue value;
return _response.TryGetValue("n", out value) ? value.ToInt64() : 0;
}
}
因为 DocumentsAffected
没有 setter 我不确定如何设置我的模拟值 return。
{
var user = new UserModel {Name = "Test"};
_mockMongoProvider = MockRepository.GenerateMock<IMongoProvider>();
//mock writeConcernResult
var result = _repo.AddUser(user);
Assert.That(result, Is.True);
}
有了 setter 我可能会这样嘲笑:
_mockMongoProvider.Stub(p => p.Insert(user))
.Return(new WriteConcernResult(
new BsonDocument()
).DocumentsAffected = 1);
任何指导都会很有帮助,干杯。
实际上你根本不需要模拟 WriteConcernResult
class。
您所要做的就是初始化 WriteConcernResult
的一个实例,如下所示:
var document = new BsonDocument();
document.Add("n", new BsonInt64(1));
var writeConcernResult = new WriteConcernResult(document);
然后您必须将您的模拟存储库设置为 return 这个实例:
_mockMongoProvider.Stub(p => p.Insert(user))
.Return(writeConcernResult );