我正在开发一个使用BDD/TDD技术的项目,我正在尽我最大的努力保持这一进程。我刚遇到的一个问题是对defaultmodelbinder的单元测试。我正在使用MSPEC编写测试。
我有一个这样的类要绑定到:
public class EmailMessageInput : IMessageInput
{
public object Recipient
{
get; set;
}
public string Body
{
get; set;
}
}
以下是我如何构建规范上下文。我正在构建一个假表单集合,并将其填充到bindingContext对象中。
public abstract class given_a_controller_with_valid_email_input :
given_a_controller_context
{
Establish additional_context = () =>
{
var form = new FormCollection
{
new NameValueCollection
{
{ "EmailMessageInput.Recipient", "test@test.com"},
{ "EmailMessageInput.Body", "Test body." }
}
};
_bindingContext = new ModelBindingContext
{
ModelName = "EmailMessageInput",
ValueProvider = form
};
_modelBinder = new DefaultModelBinder();
};
protected static ModelBindingContext _bindingContext;
protected static DefaultModelBinder _modelBinder;
}
public abstract class given_a_controller_context
{
protected static MessageController _controller;
Establish context =
() =>
{
_controller = new MessageController();
};
}
最后,当我从一个规范中执行.bindmodel()时,规范会抛出一个空引用异常:
Because of = () =>
{
_model = _modelBinder.BindModel(null, _bindingContext);
};
有什么线索吗?
如果需要,请随时向我询问更多信息。我可能认为有些事情是理所当然的。