【发布时间】:2013-11-28 12:33:27
【问题描述】:
我是 Nunit 的新手。请帮助编写测试用例。 这是我的课
public CommandModule(ICommandFetcher fetcher,ICommandBus commandBus)
{
//Get["/"] = p =>
//{z
// return Response.AsText((string)Request.Form.Username);
//};
Post["/"] = parameters =>
{
var commandRequest = this.Bind<MessageEnvelope>();
var command = fetcher.FetchFrom(commandRequest);
commandBus.Send((ICommand)command, commandRequest.MetaData);
return HttpStatusCode.OK;
};
}
}
我想测试一下这个方法
commandBus.Send((ICommand)command, commandRequest.MetaData);
谢谢!
我试试下面的方法
[Test]
public void whern_reseiving_command_it_sent_to_the_command_bus()
{
var rCommand = new DummyCommand() { SomeProp = 2 };
var serializedCommand = JsonConvert.SerializeObject(rCommand);
var envelope = new MessageEnvelope() { MetaData = new MetaData() { MessageType = "DummyCommand", MessageTypeVersion = 1 }, MessageData = serializedCommand };
var fakeCommand = A.Fake<ICommandBus>();
var browser = new Browser(with =>
{
with.Module<CommandModule>();
with.Dependency<ICommandBus>(fakeCommand);
});
var result = browser.Post("/", with =>
{
with.HttpRequest();
with.JsonBody(envelope);
});
A.CallTo(() => fakeCommand.Send(rCommand,envelope.MetaData)).MustHaveHappened();
但是A.CallTo(() => fakeCommand.Send(rCommand,envelope.MetaData)).MustHaveHappened();
它在 rcommand 值中有某种错误
【问题讨论】:
-
你应该能够在编写函数之前编写测试。如果您在编写测试时遇到困难,您必须质疑您是否真的了解实现的要求。从你的 command.Send() 开始,问问自己你认为应该发生什么。这将引导您编写单元测试。 SO 读者很难建议单元测试,因为我们不知道您期望发生什么。
-
感谢您的评论
标签: c# unit-testing nunit nancy