我正在使用MockingContainer<T>
自动设置我的依赖项。如何断言那些依赖项之一的属性已设置?
[SetUp]
public void SetUp()
{
//arrange
_baseUrl = "http://baseUrl";
_container = new MockingContainer<ApiInteractionService>();
_container.Arrange<IConfigService>(m => m.BaseUrl).Returns(_baseUrl);
_uut = _container.Instance;
}
以下操作失败,调用0,这是有道理的,因为我认为它是在查看Getter,而不是Setter。那么我如何断定被测单元调用了Setter?
[Test]
public void BaseUrlSet()
{
//act
var _ = _uut.MakeRequest((InitialRequest) Arg.AnyObject);
//assert
_container.Assert<IRestService>(m => m.BaseUrl, Occurs.Once());
}
根据文档(对于不熟悉但希望尝试提供帮助的任何人,位于JustMock Docs处)看来我应该使用Mock.ArrangeSet(lambda)
,但是我似乎无法弄清楚该如何获得与MockingContainer<T>
相关的语法。
如果情况变得更糟,我就不能使用MockingContainer<T>
,但我宁愿不必为了容纳一个特定的单元测试而重构我的测试套件。
并不是说它与问题确实相关,但是如果有人需要它,这是一个ApiInteractionService
public ApiInteractionService(IRestService restService, IConfigService configService)
{
_restService = restService;
_restService.BaseUrl = configService.BaseUrl;
}
public string MakeRequest(InitialRequest initialRequest)
{
return _restService.Post(initialRequest);
}
答案 0 :(得分:0)
为什么不简单地断言 //variable of Emmiter.Listener
Emmiter.Listener quizzoStatus = new Emitter.Listener(){
@Override public void call(Object... args){
runOnUiThread(new Runnable(){
@Override public void run(){
Log.e("opponet point", opponentPoints + " " + quizzoStatusResponseDto.getPoints());
}
});
}
};
//assigning the listener
socket.on("quizzoStatus", quizzoStatus);
. . . .
@Override protected void onDestroy(){
super.onDestroy();
//removing the listener...
socket.off("quizzoStatus", quizzoStatus);
}
在测试结束时具有正确的值?
BaseUrl
如评论中所建议,var baseUrl = _container.Get<IRestService>().BaseUrl;
Assert.AreEqual(baseUrl, _baseUrl);
将不起作用。 _container.Assert<IRestService>(m => m.BaseUrl == _baseUrl)
断言一个期望,而不仅仅是像常规断言一样断言真理。正确的语法应该是:
MockingContainer<T>.Assert
但是,奇怪的是,容器上没有AssertSet方法。