�@ �@

�A�ځFASP.NET MVC����y�o�[�W����3�Ή��z

�ŏI��@�e�X�g�������ŃA�v���P�[�V�����̕i������

�R�c �ˊ��ihttp://www.wings.msn.to/�j
2011/11/24
Page1 Page2 Page3 Page4

���P�̃e�X�g�������^���{����

�@����ŁA�A�v���P�[�V�������̃��|�W�g���E�N���X�Ή��͊������B�����āA�e�X�g�E�v���W�F�N�g���Ńe�X�g�������^���{���Ă������B�e�X�g�E�v���W�F�N�g���ŗp�ӂ��Ȃ���΂Ȃ�Ȃ��̂́A�e�X�g�p�̃��|�W�g���E�N���X�ƁA�e�X�g�E�N���X�{�̂ł���B

�m1�n�P�̃e�X�g�p�̃��|�W�g���E�N���X����������

�@�f�[�^�x�[�X���������Ȃ��Ă��e�X�g�����{�ł���悤�A�܂��͒P�̃e�X�g�p��BooksTestRepository�N���X���������Ă�����

using System;
using System.Collections.Generic;
using MvcTemplate.Models;

namespace MvcTemplate.Tests.Models
{
  class BooksTestRepository : IBooksRepository
  {

    public List<Book> GetAllBooks()
    {
      // �_�~�[��Book�G���e�B�e�B�𐶐����A���X�g�Ƃ��ĕԂ�
      var books = new List<Book>();

      for (var i = 0; i < 5; i++)
      {
        books.Add(
          new Book()
          {
            Isbn = "978-4-7980-3080-" + i.ToString(),
            Title = "����" + i.ToString(),
            Price = 2000 + i,
            Publish = "�o�Ŏ�" + i.ToString(),
            Published = DateTime.Now.AddDays(i)
          }
        );
      }
      return books;
    }

    public Book CreateBook(Book bok)
    {
      // ���������A���������̂܂ܕԂ�
      return bok;
    }
  }
}
Public Class BooksTestRepository : Implements IBooksRepository

  Public Function GetAllBooks() As System.Collections.Generic.List(Of Book) Implements IBooksRepository.GetAllBooks

    ' �_�~�[��Book�G���e�B�e�B�𐶐����A���X�g�Ƃ��ĕԂ�
    Dim books = New List(Of Book)

    For i = 2 To 5
      books.Add(
        New Book() With {
          .Isbn = "978-4-7980-3080-" & i.ToString(),
          .Title = "����" & i.ToString(),
          .Price = 2000 + i,
          .Publish = "�o�Ŏ�" & i.ToString(),
          .Published = DateTime.Now.AddDays(i)
        }
      )
    Next
    Return books
  End Function

  Public Function CreateBook(bok As Book) As Book Implements IBooksRepository.CreateBook
    ' ���������A���������̂܂ܕԂ�
    Return bok
  End Function
End Class
���X�g11�@�P�̃e�X�g�p�́A�_�~�[�E�f�[�^��Ԃ����|�W�g���E�N���X�i��FBooksTestRepository.cs�A���FBooksTestRepository.vb�j

�BBooksTestRepository�N���X�ł́A�O�o��IBooksRepository�C���^�[�t�F�C�X����������K�v������BIndex���\�b�h�̓f�[�^�x�[�X�ɐڑ��������ɁA�_�~�[��Book�G���e�B�e�B��Ԃ������̃R�[�h���ACreate���\�b�h�͈����ɓn���ꂽBook�G���e�B�e�B�����̂܂ܕԂ������̃R�[�h���A���ꂼ�ꏀ������B

�m2�n�e�X�g�E�R�[�h����������

�@����ŁA�R���g���[�����e�X�g���邽�߂̏������������̂ŁA���悢��e�X�g�E���\�b�h���L�q����B

using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MvcTemplate.Controllers;
using MvcTemplate.Tests.Models;
using System.Web.Mvc;
using MvcTemplate.Models;

[TestMethod]
public void Index()
{
  // �A�N�V���������s
  var ctrl = this.GetController();
  var result = ctrl.Index() as ViewResult;

  // ���ʂ̌���
  Assert.AreEqual(5, ((List<Book>)result.Model).Count);
}

[TestMethod]
public void Create()
{
  // �A�N�V���������s
  var ctrl = this.GetController();
  var result = ctrl.Create(
      new Book()
      {
        Isbn = "978-4-7980-3080-0",
        Title = "����",
        Price = 2000,
        Publish = "�o�Ŏ�",
        Published = DateTime.Now
      }
    );

  // ���ʂ̌���
  Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
}

private BooksController GetController()
{
  // �e�X�g�p�̃��|�W�g���E�N���X���A�R���g���[���ɃZ�b�g
  return new BooksController(
    new BooksTestRepository());

}
Imports MvcTemplateVb.MvcTemplateVb
Imports System.Web.Mvc

<TestMethod()>
Public Sub Index()

  ' �A�N�V���������s
  Dim ctrl = Me.GetController()
  Dim result = DirectCast(ctrl.Index(), ViewResult)

  ' ���ʂ̌���
  Assert.AreEqual(5, DirectCast(result.Model, List(Of Book)).Count)
End Sub

<TestMethod()>
Public Sub Create()

  ' �A�N�V���������s
  Dim ctrl = Me.GetController()
  Dim result = ctrl.Create(
    New Book() With {
      .Isbn = "978-4-7980-3080-0",
      .Title = "����",
      .Price = 2000,
      .Publish = "�o�Ŏ�",
      .Published = DateTime.Now
    }
  )

  ' ���ʂ̌���
  Assert.IsInstanceOfType(result, GetType(RedirectToRouteResult))
End Sub

Private Function GetController() As BooksController
  ' �e�X�g�p�̃��|�W�g���E�N���X���A�R���g���[���ɃZ�b�g
  Return New BooksController(
    New BooksTestRepository())

End Function
���X�g12�@���|�W�g���E�N���X������A�N�V�������e�X�g����R�[�h�i��FBooksControllerTest.cs�A���FBooksControllerTest.vb�j

�@�e�X�g�p�̃��|�W�g���E�N���X��K�p����ɂ́A�R���g���[���E�N���X�̃R���X�g���N�^�ɁA�����Ƃ��ăe�X�g�E���|�W�g����n���������i���������j�B

�@��́A��ɂ��������悤�ɁA�A�N�V�����E���\�b�h���Ăяo���A���̌��ʂ�Assert�N���X�Ō��؂��邾���ł悢�BIndex�e�X�g�E���\�b�h�ł́AIndex�A�N�V�����œ���ꂽ���f���i���X�g�j��5�‚̃G���e�B�e�B���܂�ł��邱�Ƃ��ACreate�e�X�g�E���\�b�h�ł́ACreate�A�N�V�����̌��ʁARedirectToRouteResult�N���X���Ԃ���邱�Ƃ��A���ꂼ��`�F�b�N���Ă���B

��

�@�ȏ�A����̓A�v���P�[�V�������e�X�g������@�A���b�N�E���C�u����Moq�̊�{�A�����āA�f�[�^�x�[�X�A�g�A�v���P�[�V�����̃e�X�g��e�Ղɂ����΂ł����郊�|�W�g���E�N���X�ɂ‚��ĉ�������B���H�I�ȃA�v���P�[�V�����ł́A���܂��̃R�[�h���o�ꂷ�邪�A�܂��͖{�e�ŏЉ���A�v���[�`�𗝉����Ă����΁A�قړ����v�̂Ńe�X�g�����{�ł���͂����B

�@���āA�{�A�ڂ����̉�ōŏI��BASP.NET MVC�ɂ́A�����ŏЉ���ق��ɂ����܂��܂ȋ@�\���܂܂�Ă��邪�A�܂��́A�{�A�ڂŏЉ���@�\�𗝉��ł��Ă���΁A��{�I�ȃA�v���P�[�V�����͊J���ł���悤�ɂȂ��Ă���͂����B�O��̘A���������Ă��̘A�ڂ��A�ǎҏ��Z�ɂƂ���ASP.NET MVC���w�K�����|����ƂȂ�΍K���ł���BEnd of Article

�@

�@INDEX
�@ ASP.NET MVC����y�o�[�W����3�Ή��z
�@ �ŏI��@�e�X�g�������ŃA�v���P�[�V�����̕i������
�@   1�D�P�̃e�X�g�̊�{�𗝉�����
�@   2�D���b�N�E���C�u����Moq�̗��p���@
�@   3�D�f�[�^�x�[�X�E�A�N�Z�X�𔺂��e�X�g�i1�j
  4�D�f�[�^�x�[�X�E�A�N�Z�X�𔺂��e�X�g�i2�j
�@
�C���f�b�N�X�E�y�[�W�w �@�uASP.NET MVC����y�o�[�W����3�Ή��z�v


Insider.NET �t�H�[���� �V���L��
  • ��2��@�Ȍ��ȃR�[�f�B���O�̂��߂� �i2017/7/26�j
    �@�����_���ŋL�q�ł��郁���o�̑����Athrow���Aout�ϐ��A�^�v���ȂǁAC# 7�ɂ͈ȑO�����R�[�h���Ȍ��ɋL�q�ł���悤�ȋ@�\����������Ă���
  • ��1��@Visual Studio Code�f�o�b�O�̊�b�m�� �i2017/7/21�j
    �@Node.js�v���O�������f�o�b�O���Ȃ���AVisual Studio Code�ɓ�������Ă���f�o�b�O�@�\�̊�{�́u�L�v���}�X�^�[���悤
  • ��1��@���ĂȃR�[�f�B���O�̂��߂� �i2017/7/19�j
    �@C# 7�Œlj����ꂽ�V�@�\�̒�����A�u���l���e�����\���̉��P�v�Ɓu���[�J���֐��v���Љ��B�����͕�����₷���R�[�h���L�q����̂Ɏg����
  • Presentation Translator �i2017/7/18�j
    �@Presentation Translator��PowerPoint�p�̃A�h�C���B�v���[���e�[�V�������̎����̕t����A������ł̎��^�����A�X���C�h�̖|����s����
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

���ڂ̃e�[�}

Insider.NET �L�������L���O

�{�� ����