小编Ian*_*rds的帖子

Web Api模型绑定和多态继承

我问是否有人知道是否有可能将一个继承自抽象类的具体类传递给Web Api.

例如:

public abstract class A{
    A();
}

public class B : A{

}

[POST("api/Request/{a}")]
public class Request(A a)
{
}
Run Code Online (Sandbox Code Playgroud)

目前我已经环顾四周,大多数解决方案似乎都说使用TypeNameHandling会起作用.

JsonMediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();
            jsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
Run Code Online (Sandbox Code Playgroud)

然而,事实并非如此.我的模型也从控制台应用程序传递到webapi.我已经读过,我可能能够反序列化json对象,在尝试了几次之后,我认为这不会起作用.

我已经研究过创建一个客户模型绑定器,但是我不想让我的应用程序变得更加复杂.目前我继承了3个模型的抽象类,但将来可能会扩展它.您可能会注意到添加自定义模型绑定器可能需要多个绑定器,除非有一种方法可以为所有类型的抽象类创建一个通用绑定器.

为了在我的控制台应用程序中进行扩展,我已经实例化了类b,然后将其传递给ObjectContent,然后发布到我的webapi

item = B();

//serialize and post to web api
MediaTypeFormatter formatter;
JsonMediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();
jsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
formatter = jsonFormatter;

_content = new ObjectContent<A>(item, formatter);
var response = _client.PostAsync("api/Request", _content).Result;
Run Code Online (Sandbox Code Playgroud)

调用webapi操作时,对象为null

c# json json.net asp.net-web-api

20
推荐指数
1
解决办法
9698
查看次数

如何获取select元素的选项值

我试图使用Protractor获取选择元素的选项值.但是,我无法找到选项元素.

HTML

<select ng-options="opions.c as options.n for option in options" ng-model="model">
    <option value="0">Option 1</option>
    <option value="1">Option 2</option>
</select>
Run Code Online (Sandbox Code Playgroud)

规格文件

describe('testing select option', function() {
    it('', function() {
        ptor = protractor.getInstance();

        //This will not get the option required
        ptor.findElement(protractor.By.binding('model'));
    });
});
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到一种方法来获取选项值,因为我还没有找到一个我可以使用的函数,它不会给出异常或错误消息.

有谁知道如何解决这个问题?

angularjs protractor

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

量角器可以测试非基于角度的登录

我正在测试主要在angularjs中编写的应用程序,但应用程序的某些元素是用.NET C#编写的,例如登录表单.

我的问题是这个.

我可以利用Protractor并通过e2e测试完全测试我的应用程序.

我尝试过使用量角器,到目前为止我很满意.但是,我似乎无法测试用.NET编写的页面.我不确定这是不是因为量角器只测试角度应用程序的元素,或者是否是我编写测试的方式.

我试过在页面中搜索元素,如下例所示.

ptor.findElement(protractor.By.xpath('/html/body/div/div[1]/section/input')).sendKeys('xxx');
Run Code Online (Sandbox Code Playgroud)

但这只会返回一个UnknownError:javascript错误:无法调用未定义的方法'get'.

我知道这个错误意味着元素在页面上不可见但是我在下面显示的测试中放置了超时

it('this is a test', function() {}, 10000);

我要求的是能够将文本添加到由...创建的动态创建的输入框中 Html.TextBoxFor()

.net c# angularjs angularjs-e2e protractor

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

量角器期望currenturl失败

我正在尝试针对我的本地服务器运行e2e测试并测试生成的url(在单击导航按钮之后)是正确的结果.但是,生成的url始终为false.

我的代码如下所示:

HTML:

//http://localhost/#/current_Page
<html>
    <head><title></title></head>
    <body>
    //should change the current url to
    //http://localhost/#/new_page
    <button class="button" ng-click="change_page()">Change Page</button>
</html>
Run Code Online (Sandbox Code Playgroud)

测试代码:

var protractor = require('protractor');
require('protractor/jasminewd');

describe('Tests', function() {      
    var ptor;

    describe('Test 1', function() {
        var ptor = protractor.getInstance();
        ptor.get('#/current_page'); 
        it('change page and current url', function() {
            ptor.findElement(protractor.By.className('.button').click().then(function() {
                expect(ptor.currentUrl()).toContain('#/new_page');
            });
        });
    }, 30000);
});
Run Code Online (Sandbox Code Playgroud)

问题是单击按钮后的当前URL仍为#/ current_url,并且未更改为预期结果#/ new_page.

有谁知道我哪里出错了?

angularjs angularjs-e2e protractor

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

一种点击量角器端到端测试中隐藏元素的方法

有没有办法点击子菜单中的隐藏值.我希望能够做类似的事情

driver.findElement(protractor.By.xpath('/html/body/div/div/a')).mouseover.then(function() {
    ptor.findElement(protractor.By.className('name').getText().then(function(result) {
        expect(result).toBe('Me');
    });
});
Run Code Online (Sandbox Code Playgroud)

当菜单项不可见时,或者我们目前是否受此限制.如果这是不可能的,目前有办法解决这个问题.

angularjs protractor

9
推荐指数
1
解决办法
9453
查看次数