MongoDB WriteConcernResult 怎么能被嘲笑
本文关键字:怎么能 WriteConcernResult MongoDB | 更新日期: 2023-09-27 18:34:35
我试图模拟通过Insert()
返回的WriteConcernResult
;
我的提供程序返回一个WriteConcernResult
,并通过添加用户调用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
类:
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
没有二传手,所以我不确定如何设置我的模拟将返回的值。
{
var user = new UserModel {Name = "Test"};
_mockMongoProvider = MockRepository.GenerateMock<IMongoProvider>();
//mock writeConcernResult
var result = _repo.AddUser(user);
Assert.That(result, Is.True);
}
对于二传手,我可能会像这样嘲笑:
_mockMongoProvider.Stub(p => p.Insert(user))
.Return(new WriteConcernResult(
new BsonDocument()
).DocumentsAffected = 1);
任何指导都会非常有帮助,干杯。
实际上你根本不需要嘲笑WriteConcernResult
类。
您所要做的就是初始化WriteConcernResult
的实例,如下所示:
var document = new BsonDocument();
document.Add("n", new BsonInt64(1));
var writeConcernResult = new WriteConcernResult(document);
然后,您必须设置模拟存储库以返回此实例:
_mockMongoProvider.Stub(p => p.Insert(user))
.Return(writeConcernResult );