これは古い質問であり、他の場所で回答される可能性があることは知っていますが、私が取り組んでいるプロジェクトでは、Linqpad を使用してコントローラー アクションをデバッグし、戻り値を取得できます。
簡単に言うと、Linqpad に何かを返すように指示する必要があります。
var result = homeController.Index();
result.Dump();
また、コンテキストをモックして、Visual Studio をデバッガーとしてアタッチする必要がある場合もあります。
完全なコード スニペット:
void Main()
{
using(var svc = new CrmOrganizationServiceContext(new CrmConnection("Xrm")))
{
DummyIdentity User = new DummyIdentity();
using (var context = new XrmDataContext(svc))
{
// Attach the Visual Studio debugger
System.Diagnostics.Debugger.Launch();
// Instantiate the Controller to be tested
var controller = new HomeController(svc);
// Instantiate the Context, this is needed for IPrincipal User
var controllerContext = new ControllerContext();
controllerContext.HttpContext = new DummyHttpContext();
controller.ControllerContext = controllerContext;
// Test the action
var result = controller.Index();
result.Dump();
}
}
}
// Below is the Mocking classes used to sub in Context, User, etc.
public class DummyHttpContext:HttpContextBase {
public override IPrincipal User {get {return new DummyPrincipal();}}
}
public class DummyPrincipal : IPrincipal
{
public bool IsInRole(string role) {return role == "User";}
public IIdentity Identity {get {return new DummyIdentity();}}
}
public class DummyIdentity : IIdentity
{
public string AuthenticationType { get {return "?";} }
public bool IsAuthenticated { get {return true;}}
public string Name { get {return "sampleuser@email.com";} }
}
デバッガーを選択するように求めるメッセージが表示され、アプリがビルドされた Visual Studio のインスタンスを選択します。
MVC-CRM には特定の設定があるため、これがすべての人に役立つとは限りませんが、うまくいけば、これが他の人の助けになることを願っています。