小编wil*_*n.w的帖子

控制器中的模拟服务器

我的控制器中有以下行:

string lTempPath = Path.Combine(Server.MapPath("~/Temp"), lRandomFileName);
Run Code Online (Sandbox Code Playgroud)

问题是服务器不是虚拟的,只能使用getter访问.

我得到了

"该方法或操作未实施."

我该如何模拟这台服务器?

我创建的测试如下:

    [TestCase]
    public void PreviewActionShouldGenerateUrlOfPdf()
    {
        //Arrange
        var server = MockRepository.GenerateMock<HttpServerUtilityBase>();
        server.Stub(s => s.MapPath("~Temp")).Return("~/Temp");
        var httpContext = MockRepository.GenerateMock<HttpContextBase>();
        httpContext.Stub(hc => hc.Server).Return(server);
        httpContext.Server.Stub(s => s.MapPath("~/Temp")).Return("~/Temp");

        var controller = new StudiesController()
        {
            ReportingService = MockRepository.GenerateMock<IReportingService>(),
            SecurityService = MockRepository.GenerateMock<ISecurityService>()
        };


        controller.ControllerContext = new ControllerContext(httpContext, new RouteData(), controller);

        controller.ReportingService.Stub(rs => rs.GetStudyByGID(new Guid())).Return(new Study());
        controller.ReportingService.Stub(rs => rs.ListPractices()).Return(new[] { new Practice(), new Practice() });
        controller.SecurityService.Stub(ss => ss.GetUser("")).IgnoreArguments().Return(new User());

        controller.ControllerContext.HttpContext = MockRepository.GeneratePartialMock<FakeHttpContext>("http://test.com");
        controller.HttpContext.User = new FakePrincipal(new FakeIdentity("test"), …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc mocking

8
推荐指数
2
解决办法
4171
查看次数

如何在AngularJS中广播测试事件?

我只是想知道如何测试这个handleAddClientBroadcast事件?

我有这样的导航服务:

angular.module("ruleManagement.services")
    .factory('navigationService', function ($rootScope) {

        var navigationService = {};

        navigationService.prepForBroadcast = function() {
          this.broadCastIsAddClientItem();
        };

        navigationService.broadCastIsAddClientItem = function() {
          $rootScope.$broadcast('handleAddClientBroadcast');
        };

        return navigationService;
    });
Run Code Online (Sandbox Code Playgroud)

我把这个导航服务注入到我的中,clientsCtrl然后抓住handleAddClientBroadcast这样的:

$scope.$on('handleAddClientBroadcast', function () {
  $scope.clientModel = {
    id: 0,
    name: "",
    description: "",
    rules: []
  };

  var lastClient = _.findLast($scope.clients);

  if (typeof lastClient == 'undefined' || lastClient == null) {
    lastClient = $scope.clientModel;
  }

  $scope.clientModel.id = lastClient.id + 1;
  $scope.clients.push($scope.clientModel);
});
Run Code Online (Sandbox Code Playgroud)

谢谢.

unit-testing angularjs

2
推荐指数
1
解决办法
1558
查看次数

标签 统计

angularjs ×1

asp.net-mvc ×1

mocking ×1

unit-testing ×1