0

我正在使用一个 SDK,它可以查询一组数据以及使用名为 VersionOne 的宁静 Web 服务更新数据。我们使用 Web 服务来记录 QA 测试。每个测试都有“名称”、“状态”等属性。除“状态”外,大部分属性都已成功更新。

这是我正在调用的方法,当我逐步执行代码时,我可以获得旧值,但无法按预期更改属性值。错误说明“无法为只读属性分配新值”。

public bool TestInProgress()
    {
        var testId = Oid.FromToken("Test:26017", _context.MetaModel);
        var query = new Query(testId);
        var assetType = _context.MetaModel.GetAssetType("Test");
        var testStatus = assetType.GetAttributeDefinition("Status.Name");

        query.Selection.Add(testStatus);
        var result = _context.Services.Retrieve(query);
        var test = result.Assets[0];
        var oldResult = GetValue(test.GetAttribute(testStatus).Value);
        test.SetAttributeValue(testStatus, "Failed");
        _context.Services.Save(test);

        LogResult(test.Oid.Token, oldResult, GetValue(test.GetAttribute(testStatus).Value));
        Console.WriteLine(test.Oid.Token, oldResult, GetValue(test.GetAttribute(testStatus).Value));

        return true;

    }

https://github.com/versionone/VersionOne.SDK.Net.APIClient#attribute-definition

根据 VersionOne SDK 文档,它看起来好像“只读”并且是一个属性。我已经查看了来自几个不同测试和测试集的不同属性,但没有看到它。我通过了正确的身份验证,并通过许多不同的测试成功更新了其他属性。但是,当我尝试以编程方式更改“状态”属性时,它说它是只读的。

https://github.com/versionone/VersionOne.SDK.Net.APIClient#learn-by-example-apiclient-setup

如何以编程方式更改 VersionOne 中当前为只读的资产的属性,以便可以使用 restful Web 服务更新属性?

4

1 回答 1

1

因为属性是只读的,您将无法更改其值。相反,请考虑创建一个“新”资产,设置其属性,然后保存它。

查看下面的示例并尝试在您的项目中利用该想法:

var TestId = Oid.FromToken("Test:26017", _context.MetaModel);
var TestAsset = _context.MetaModel.GetAssetType("Test");
var newTestAsset = _context.Services.New(TestAsset, TestId);

var TestStatusAttr = newTestAsset.GetAttributeDefinition("Status.Name");
newTestAsset.SetAttributeValue(TestStatusAttr, "Failed");
_context.Services.Save(newTestAsset);
于 2014-02-18T22:14:26.487 回答