小编Dil*_*nan的帖子

使用Moq验证事件注册

我正在开发一个尝试使用此示例实现MVP模式的asp.net(经典)应用程序.在尝试对我的演示者进行单元测试并使用以下模式时,psuedocode看起来像这样

//base view interface
public interface IView
{
    event EventHandler Init;

    event EventHandler Load;

    bool IsPostBack { get; }

    void DataBind();

    bool IsValid { get;}
}

//presenter psuedo code
public class SomePresenter
{
     public SomePresenter(ISomeDomainService service, IView someView)
     {
           ...
           //HOW DO WE TEST/VERIFY THAT THIS REGISTRATION OCCURS?
           someView.Init += OnInit;
           someView.Load += OnLoad;
     }
}
...
//consuming code that exercises the above code, that needs to be tested
var presenter = new SomePresenter(someDomainService, someView);
Run Code Online (Sandbox Code Playgroud)

如何验证演示者是否正在执行预期的操作,即注册Init和Load事件?虽然这很容易在Phil Haack …

.net c# asp.net unit-testing moq

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

Swagger - Springfox默认会生成一些响应消息(401,403 ...).我该如何删除它们?

我有控制器这么简单:

    @RequestMapping(value="/async/data", method=RequestMethod.GET, produces="application/json")
    @ApiOperation(value = "Gets data", notes="Gets data asynchronously")
    @ApiResponses(value={@ApiResponse(code=200, message="OK")})
    public Callable<List<Data>> getData(){
        return ( () -> {return dataService.loadData();} );
    }
Run Code Online (Sandbox Code Playgroud)

我期望只有HTTP状态200的响应消息.但是springfox总是生成下面的那些(401,403,404).如何禁用(不显示)它们?

async-rest-controller Show/Hide List Operations Expand Operations
GET /async/data Gets data

Implementation Notes
Gets data asynchronously

Response Class (Status 200)
ModelModel Schema
{}

Response Content Type 

Response Messages
HTTP Status Code    Reason  Response Model  Headers
401 Unauthorized        
403 Forbidden       
404 Not Found
Run Code Online (Sandbox Code Playgroud)

spring-mvc swagger swagger-ui

15
推荐指数
2
解决办法
5875
查看次数

在WCF Web编程模型中,如何使用查询字符串参数数组(即具有相同名称)编写操作契约?

使用WCF Web编程模型可以指定操作合同,如下所示:

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "SomeRequest?qs1={qs1}&qs2={qs2}")]
XElement SomeRequest1(string qs1, string qs2);
Run Code Online (Sandbox Code Playgroud)

现在,如果我们必须签订一个接受具有相同名称的参数数组(在这种情况下为qs1)的合同,那么......

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "SomeRequest?qs1={qs1}&qs1={qs2}")]
 XElement SomeRequest2(string qs1, string qs2);
Run Code Online (Sandbox Code Playgroud)

当我们调用方法时,我们在运行时收到错误消息:

查询字符串必须具有唯一名称的"name = value"对.请注意,名称不区分大小写.有关更多详细信息,请参阅UriTemplate的文档.

如何定义一个HTTP服务,该服务使用参数数组公开资源,而不需要使用loosey-goosey接口?

rest wcf web-services contract operation-contract

13
推荐指数
2
解决办法
2万
查看次数

使用javascript重置元标记以防止它刷新页面

我们有一个遗留应用程序(经典ASP和ASP.net的混合),它有一些Ajax内容丰富的页面.期望网站的用户在页面上执行一系列任务,可以跨越相当长的时间说,15-30分钟.

其中一个要求是登录到站点的用户在15分钟不活动后自动注销.目前,这是通过使用元标记在页面中不活动15分钟后将用户重定向到注销页面来实现的.

<meta name='Refresh' http-equiv="Refresh" content="900;URL=/someurl/logout.asp">

我们遇到的问题是,尽管与服务器进行了许多AJAX交互,浏览器仍然认为页面上没有任何活动.因此,在浏览器认为不活动的15分钟后,即使用户正在做某事,用户也会自动注销.

受此留言板帖子的启发,我们试图通过使用javascript(JQuery)来解决烦恼

下面将是一个事件处理程序,例如单击页面上的保存等.为简单起见,这里是将页面加载修改为5秒的刷新时间

$(document).ready(function() {
    var selector = 'meta[name=Refresh]';
    var content = $(selector).attr("content"); //"900;URL=/someurl/logout.asp"
    $(selector).attr("content", "5;URL=/someurl/logout.asp"); 
});
Run Code Online (Sandbox Code Playgroud)

将重置(重新)设置元标记内容的页面刷新计时器的意图将被重置.不幸的是,这似乎不起作用(在IE中).

由于这是一个遗留应用程序,因此有些决定即使用元标记等.问题是,有没有办法让元标记刷新与Ajax应用程序和平共存?我做错了什么,有办法解决这个问题吗?

javascript jquery internet-explorer refresh meta-tags

13
推荐指数
1
解决办法
8492
查看次数

Springfox @RestController命名

我使用Springfox遇到了一些小麻烦.我无法为@RestController类设置名称.

我正在使用Spring启动和Swagger2.

以下代码将在springfox ui中生成一个名为"rest-status-controller"的控制器.我期待一个"应用程序状态".还有其他配置我不知道吗?

@Api("Application Status")
@RestController
@RequestMapping("/rest/status")
public class RestStatusController {

    @ApiOperation(value="Get components current status")
    @RequestMapping(method = RequestMethod.GET, produces=MediaType.APPLICATION_JSON)
    public String global() {
    //...
    }

    @ApiOperation(value="Get mysql current status")
    @RequestMapping(value="/mysql" method = RequestMethod.GET, produces=MediaType.APPLICATION_JSON)
    public String mysql() {
    //...
    }
}
Run Code Online (Sandbox Code Playgroud)

swagger spring-boot springfox

11
推荐指数
4
解决办法
8103
查看次数

Swagger for SpringMVC-Springfox的替代品?

你们中的任何人都可以为基于Spring MVC的REST API实现Swagger提出其他建议吗?仅供参考,这不是Spring Boot。我已经尝试过Springfox,但是恕我直言,这是一辆越野车。

spring-mvc swagger springfox

6
推荐指数
1
解决办法
3039
查看次数

全面整合多个微服务

我有多个微服务,已经为此大刀阔斧了。我想将所有api置于单一的swagger UI下。我已经按照以下链接进行了此操作。但在STS中以Maven方法尝试过。 昂首阔步的Github示例

这是我在项目中的不同文件,

@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
@EnableSwagger2
public class SgtestApplication {

    public static void main(String[] args) {
        SpringApplication.run(SgtestApplication.class, args);
    }

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() 
                  .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot")))
                  .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.cloud")))
                  .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.security")))
                     .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Single swagger")
                .description("API to retrieve swagger apis")
                .version("1.0.0")
                .build();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的资源提供者如下,

@Component
@Primary
@EnableAutoConfiguration
public class GatewaySwaggerResourceProvider implements SwaggerResourcesProvider {

    @Autowired
    private SwaggerServicesConfig swaggerServiceList;

    public GatewaySwaggerResourceProvider() {
    }

    @Override
    public List<SwaggerResource> get() {
        List<SwaggerResource> resources = new ArrayList<>(); …
Run Code Online (Sandbox Code Playgroud)

java spring swagger spring-boot springfox

6
推荐指数
1
解决办法
2849
查看次数

使用 swagger-springmvc(现在是 springfox)查看 swagger api-docs 时出现“404 Not Found”

我试图在我的 spring 项目中配置 swagger,但是点击“ http://localhost:8080/api-docs ”说“404 Not Found”。

Maven 依赖

<dependency>            
  <groupId>com.mangofactory</groupId>           
  <artifactId>swagger-springmvc</artifactId>                   
  <version>0.8.2</version>      
</dependency>
Run Code Online (Sandbox Code Playgroud)

SwaggerConfig.java 文件

package com.ucap.swagger;

import com.mangofactory.swagger.configuration.JacksonScalaSupport;
import com.mangofactory.swagger.configuration.SpringSwaggerConfig;
import com.mangofactory.swagger.configuration.SpringSwaggerModelConfig;
import com.mangofactory.swagger.configuration.SwaggerGlobalSettings;
import com.mangofactory.swagger.core.DefaultSwaggerPathProvider;
import com.mangofactory.swagger.core.SwaggerApiResourceListing;
import com.mangofactory.swagger.core.SwaggerPathProvider;
import com.mangofactory.swagger.scanners.ApiListingReferenceScanner;
import com.wordnik.swagger.model.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import static com.google.common.collect.Lists.newArrayList;

@Configuration
@ComponentScan(basePackages = "com.mangofactory.swagger")
public class SwaggerConfig {

    public static final List<String> DEFAULT_INCLUDE_PATTERNS = Arrays.asList("/news/.*");
    public static final String SWAGGER_GROUP = "mobile-api";

    @Value("${app.docs}")
    private …
Run Code Online (Sandbox Code Playgroud)

rest spring-mvc swagger swagger-ui

5
推荐指数
1
解决办法
9225
查看次数