Unit testing 针对Nancy.Request.Session的单元测试
我可能错过了一些简单的东西 我有以下方法要进行单元测试:Unit testing 针对Nancy.Request.Session的单元测试,unit-testing,nancy,Unit Testing,Nancy,我可能错过了一些简单的东西 我有以下方法要进行单元测试: public bool-In(请求) { return(“Admin”=(string)request.Session[“Type”]); } 事实证明,这并不像我预期的那么容易,因为我找不到一种方法来正确设置请求对象以传递给该方法。 直接更新一个请求会导致一个未启用会话的对象,而我使用临时ConfigurableBootstrapper实现和模块的粗略尝试都失败了 (我发现了,但是没有代码来说明解释,我无法理解它;在AppHarbif
public bool-In(请求)
{
return(“Admin”=(string)request.Session[“Type”]);
}
事实证明,这并不像我预期的那么容易,因为我找不到一种方法来正确设置请求
对象以传递给该方法。
直接更新一个请求
会导致一个未启用会话的对象,而我使用临时ConfigurableBootstrapper
实现和模块的粗略尝试都失败了
(我发现了,但是没有代码来说明解释,我无法理解它;在AppHarbify代码中也找不到实际的例子。)
那么,获取我可以使用的会话的请求对象的最简单/推荐方法是什么
谢谢 创建一个包装请求的接口。类似于
public interface IRequestWrapper {
Session Session { get; set; }
}
将此接口而不是实际实现传递给“In”方法
现在在单元测试中,您将创建一个IRequestWrapper的伪实现,该实现返回一个伪会话对象
var sut = new SomeClass();
var result = sut.In(new FakeRequest());
当然,FakeRequest将实现IRequestWrapper,会话对象可以存根以返回“Admin”
还有其他方法可以做到这一点,例如,使用模拟/隔离框架,即Moq
希望这至少能帮助您找到正确的方向。您应该使用声明来验证用户是管理员还是现在的管理员。
var sut = new SomeClass();
var result = sut.In(new FakeRequest());