我知道如何使用UrlMappings在Grails中进行通用异常处理,并使用ErrorController进行泛型异常处理,这样如果异常转义控制器,用户将被发送到通用错误页面并记录异常.我也知道如何使用try/catch块来处理特定异常并尝试从中恢复.
但是在大多数控制器中,如果发生异常,我只想给用户一个稍微更具体的错误消息.所以在创建操作中,我想告诉用户该项目未创建.或者在导入操作中,我想告诉用户导入失败.现在,控制器看起来像:
class ThingController {
def create = {
try {
// The real controller code, which quickly hands it off to a service
} catch (Exception e) {
handleException(e, "There was an error while attempting to create the Thing")
}
}
def delete = {
try {
// The real controller code, which quickly hands it off to a service
} catch (Exception e) {
handleException(e, "There was an error while attempting to delete the Thing")
}
}
private …Run Code Online (Sandbox Code Playgroud) marsApp.filter("transformSensorStatus", function($scope) {
return function(input, options) {
var sensorReading = ( input ? ( input / 1000) : 0);
var sensorLowLimit = (options["lowLimit"] ? (options["lowLimit"] / 1000) : 0);
var sensorHighLimit = (options["highLimit"] ? (options["highLimit"] / 1000) : 0);
var curStat;
switch (sensorReading) {
case 255:
case 254:
case 253:
curStat = generateStateInnerHtml(sensorReading);
break;
default:
curStat = generateStateInnerHtml(options["sensorStatus"]);
}
return curStat;
function generateStateInnerHtml(state) {
var stateHtml = null;
if (state == 255 || state == 254) {
stateHtml = "a"; …Run Code Online (Sandbox Code Playgroud) 我正在使用before_action过滤器来调用authenticate哪种方法,如果用户无权访问所请求的页面,则会将用户重定向回主页.
我想从此步骤中排除一个页面,仅用于测试目的.
到目前为止我所看到的是,我可以使用except以排除某些控制器操作受到before_action过滤器的影响,如下所示:
before_action :authenticate, except: :demo_login
Run Code Online (Sandbox Code Playgroud)
我也可以像这样一次排除多个动作:
before_action :authenticate, except [:demo_login, :demo_show]
Run Code Online (Sandbox Code Playgroud)
我决定在创建视图助手类时使用单例设计模式.这让我思考; 单例实例是否会在请求中存活?这导致了另一个问题,哪些变量(如果有的话)在Web请求中存活,并且这取决于部署?(Fastcgi,Mongrel,Passenger,......)
我知道Controller实例变量没有持久化.我知道常量是持久的(或重新加载?).但我不知道类变量,类上的实例变量,Eigenclasses,......
我已经使用TDD几个月了,现在我想学习如何测试我的控制器(MVC).
通过测试每个功能的最小单元来进行单元测试.有时,控制器不小.他们从模型中获取数据并传递给视图.
我应该如何对控制器进行单元测试?我应该模拟控制器的依赖吗?
控制器测试是否考虑集成测试?
谢谢.
model-view-controller tdd integration-testing controller mocking
在一个很好的设计.是否应该在单独的业务逻辑层(在asp.net MVC模型中)处理访问数据库,或者将IQueryables或DbContext对象传递给控制器是否可以?
为什么?各自的优点和缺点是什么?
我正在用C#构建一个ASP.NET MVC应用程序.它使用EntityFramework作为ORM.
让我们稍微简化一下这个场景.
我有一个可爱的蓬松小猫数据库表.每只小猫都有小猫图像链接,小猫蓬松指数,小猫名称和小猫ID.这些映射到EF生成的POCO调用Kitten.我可能会在其他项目中使用此类,而不仅仅是asp.net MVC项目.
我有一个KittenController应该去取最新的蓬松小猫/Kittens.它可能包含选择小猫的一些逻辑,但不是太多的逻辑.我一直在和朋友争论如何实现这一点,我不会透露双方:)
public ActionResult Kittens() // some parameters might be here
{
using(var db = new KittenEntities()){ // db can also be injected,
var result = db.Kittens // this explicit query is here
.Where(kitten=>kitten.fluffiness > 10)
.Select(kitten=>new {
Name=kitten.name,
Url=kitten.imageUrl
}).Take(10);
return Json(result,JsonRequestBehavior.AllowGet);
}
}
Run Code Online (Sandbox Code Playgroud)
public class Kitten{
public string Name {get; set; }
public string Url {get; …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc entity-framework controller separation-of-concerns
我正在尝试使用Karma和Jasmine测试一个指令来完成一些事情.首先是它使用templateUrl,其次是它定义了一个控制器.这可能不是正确的术语,但它在声明中创建了一个控制器.设置Angular应用程序,以便每个单元都包含在自己的模块中.例如,所有指令都包含在模块app.directive中,所有控制器都包含在app.controller中,所有服务都包含在app.service等中.
为了使事情进一步复杂化,在该指令中定义的控制器具有单个依赖关系,并且它包含一个函数,该函数使$ http请求在$ scope上设置值.我知道我可以使用$ httpBackend mock来模拟这个依赖关系来模拟$ http调用并将正确的对象返回给这个函数的调用.我已经在我创建的其他单元测试中做了很多次,并且很好地掌握了这个概念.
下面的代码是用CoffeeScript编写的.
这是我的指示:
angular.module('app.directive')
.directive 'exampleDirective', [() ->
restrict: 'A'
templateUrl: 'partials/view.html'
scope: true
controller: ['$scope', 'Service', ($scope, Service) ->
$scope.model = {}
$scope.model.value_one = 1
# Call the dependency
Service.getValue()
.success (data) ->
$scope.model.value_two = data
.error ->
$scope.model.value_two = 0
]
]
Run Code Online (Sandbox Code Playgroud)
这是依赖服务:
angular.module("app.service")
.factory 'Service', ['$http', ($http) ->
getValue: () ->
options.method = "GET"
options.url = "example/fetch"
$http _.defaults(options)
Run Code Online (Sandbox Code Playgroud)
这是观点:
<div>
{{model.value_one}} {{model.value_two}}
</div>
Run Code Online (Sandbox Code Playgroud)
我已经简化了这一点,因为我的目标只是了解如何连接它,我可以从那里接受它.我用这种方式构造它的原因是因为我最初没有创建它.我正在为现有项目编写测试,但我没有能力以其他方式配置它.我试图编写测试,但不能让它做我想要的.
我想测试以查看值是否绑定到视图,如果可能还要测试控制器是否正在正确创建值.
这是我得到的:
'use strict'
describe "the …Run Code Online (Sandbox Code Playgroud) 我对Laravel 5.1有一个简单的问题.我使用php artisan命令创建了一个控制器:
php artisan make:controller PageSettings
Run Code Online (Sandbox Code Playgroud)
但是这是错误的,因为我真的想在Admin文件夹中创建这个控制器,如下所示:
php artisan make:controller Admin/PageSettings
Run Code Online (Sandbox Code Playgroud)
现在我想摆脱我的旧PageSettings控制器.是否可以删除我的旧PageSettings.php manualy?或者还有什么需要做的事情?
我有这样的下拉菜单
<select name="selection">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<input type="text" name="stext">
Run Code Online (Sandbox Code Playgroud)
我想要在laravel
public static myfunction(){
$input = \Input::only('selection','stext');
$rule = array(
'selection' => 'required',
'stext' => 'required_if:selection,2,3',
);
$validate = \Validator::make($input,$rule);
}
Run Code Online (Sandbox Code Playgroud)
但如果我选择选项1,仍然需要stext.为什么?我怎么能解决它?
谢谢你.
我正在开发一个Spring Boot Rest API来处理大量的传入请求调用.我的控制器如下所示:
@RestController
public class ApiController {
List<ApiObject> apiDataList;
@RequestMapping(value="/data",produces={MediaType.APPLICATION_JSON_VALUE},method=RequestMethod.GET)
public ResponseEntity<List<ApiObject>> getData(){
List<ApiObject> apiDataList=getApiData();
return new ResponseEntity<List<ApiObject>>(apiDataList,HttpStatus.OK);
}
@ResponseBody
@Async
public List<ApiObject> getApiData(){
List<ApiObject> apiDataList3=new List<ApiObject> ();
//do the processing
return apiDataList3;
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在我想为每个用户设置一个ratelimit.假设每个用户每分钟只能请求5个请求或类似的东西.如何设置每个用户的速率限制,每分钟只能进行5次api呼叫,如果用户请求的次数超过了我可以发回429响应?我们需要他们的IP地址吗?
任何帮助表示赞赏.
controller ×10
angularjs ×2
laravel ×2
artisan ×1
asp.net-mvc ×1
c# ×1
directive ×1
exception ×1
filter ×1
grails ×1
java ×1
javascript ×1
karma-runner ×1
laravel-4 ×1
laravel-5 ×1
laravel-5.1 ×1
mocking ×1
persistence ×1
php ×1
rest ×1
scope ×1
singleton ×1
spring-boot ×1
spring-mvc ×1
tdd ×1
unit-testing ×1
validation ×1